Update web-platform-tests to revision 86e157b387e63ba586d8ad51d2fcd5690626f5ad

This commit is contained in:
WPT Sync Bot 2018-08-14 21:27:05 -04:00
parent bc82521eb7
commit b642b70974
54 changed files with 728 additions and 480 deletions

View file

@ -1,4 +1,5 @@
[url-in-tags-revoke.window.html]
expected: TIMEOUT
[Fetching a blob URL immediately before revoking it works in an iframe.]
expected: FAIL
@ -14,3 +15,6 @@
[Opening a blob URL in a new window by clicking an <a> tag works immediately before revoking the URL.]
expected: FAIL
[Fetching a blob URL immediately before revoking it works in <script> tags.]
expected: TIMEOUT

View file

@ -109872,7 +109872,7 @@
"/css/css-contain/contain-size-001.html",
[
[
"/css/reference/pass_if_pass_below.html",
"/css/css-contain/reference/pass_if_pass_below_clipped.html",
"=="
]
],
@ -109884,7 +109884,7 @@
"/css/css-contain/contain-size-002.html",
[
[
"/css/reference/pass_if_pass_below.html",
"/css/css-contain/reference/pass_if_pass_below_clipped.html",
"=="
]
],
@ -109896,7 +109896,7 @@
"/css/css-contain/contain-size-003.html",
[
[
"/css/reference/pass_if_pass_below.html",
"/css/css-contain/reference/pass_if_pass_below_clipped.html",
"=="
]
],
@ -109932,7 +109932,7 @@
"/css/css-contain/contain-size-006.html",
[
[
"/css/reference/pass_if_pass_below.html",
"/css/css-contain/reference/pass_if_pass_below_clipped.html",
"=="
]
],
@ -110004,7 +110004,7 @@
"/css/css-contain/contain-size-012.html",
[
[
"/css/reference/pass_if_pass_below.html",
"/css/css-contain/reference/pass_if_pass_below_clipped.html",
"=="
]
],
@ -243536,6 +243536,11 @@
{}
]
],
"css/css-contain/reference/pass_if_pass_below_clipped.html": [
[
{}
]
],
"css/css-contain/reference/quote-scoping-001-ref.html": [
[
{}
@ -329650,6 +329655,12 @@
{}
]
],
"css/css-logical/animation-004.html": [
[
"/css/css-logical/animation-004.html",
{}
]
],
"css/css-logical/logical-box-border-color.html": [
[
"/css/css-logical/logical-box-border-color.html",
@ -337584,6 +337595,12 @@
{}
]
],
"custom-elements/range-and-constructors.html": [
[
"/custom-elements/range-and-constructors.html",
{}
]
],
"custom-elements/reaction-timing.html": [
[
"/custom-elements/reaction-timing.html",
@ -361970,6 +361987,12 @@
{}
]
],
"html/syntax/parsing/meta-inhead-insertion-mode.html": [
[
"/html/syntax/parsing/meta-inhead-insertion-mode.html",
{}
]
],
"html/syntax/parsing/named-character-references.html": [
[
"/html/syntax/parsing/named-character-references.html",
@ -366538,12 +366561,6 @@
{}
]
],
"navigation-timing/nav2_idlharness.html": [
[
"/navigation-timing/nav2_idlharness.html",
{}
]
],
"navigation-timing/nav2_test_attributes_exist.html": [
[
"/navigation-timing/nav2_test_attributes_exist.html",
@ -391198,20 +391215,18 @@
{}
]
],
"uievents/idlharness.window.js": [
[
"/uievents/idlharness.window.html",
{}
]
],
"uievents/interface/click-event.htm": [
[
"/uievents/interface/click-event.htm",
{}
]
],
"uievents/interfaces.html": [
[
"/uievents/interfaces.html",
{
"timeout": "long"
}
]
],
"uievents/legacy-domevents-tests/approved/ProcessingInstruction.DOMCharacterDataModified.html": [
[
"/uievents/legacy-domevents-tests/approved/ProcessingInstruction.DOMCharacterDataModified.html",
@ -391724,9 +391739,9 @@
{}
]
],
"vibration/idl.html": [
"vibration/idlharness.window.js": [
[
"/vibration/idl.html",
"/vibration/idlharness.window.html",
{}
]
],
@ -393466,6 +393481,12 @@
{}
]
],
"webaudio/the-audio-api/the-delaynode-interface/delaynode-channel-count-1.html": [
[
"/webaudio/the-audio-api/the-delaynode-interface/delaynode-channel-count-1.html",
{}
]
],
"webaudio/the-audio-api/the-delaynode-interface/delaynode-max-default-delay.html": [
[
"/webaudio/the-audio-api/the-delaynode-interface/delaynode-max-default-delay.html",
@ -397766,9 +397787,9 @@
{}
]
],
"webvtt/api/interfaces.html": [
"webvtt/api/idlharness.window.js": [
[
"/webvtt/api/interfaces.html",
"/webvtt/api/idlharness.window.html",
{}
]
],
@ -430604,7 +430625,7 @@
"testharness"
],
"background-fetch/fetch.https.window.js": [
"cca63289206f75de446852c1b37fb0c0911aadd7",
"f146212987a4ebb2e90edc190e9232cbd07210f9",
"testharness"
],
"background-fetch/get-ids.https.window.js": [
@ -430640,15 +430661,15 @@
"support"
],
"background-fetch/service_workers/sw-update-ui.js": [
"ae0ed090b42df76780ae23a9bf250d1e359917c4",
"5dec087cd155b486b974f3a26c149fcd113380c3",
"support"
],
"background-fetch/service_workers/sw.js": [
"34ea5d4fb64fb410247d844b89e87f14a9223b11",
"10e17f5874f2c76eaff7116107fa5896e31095a0",
"support"
],
"background-fetch/update-ui.https.window.js": [
"d561267d14eca9abe4bedf6c216d5044778aa843",
"aed0bb86d26398aabc3688c6fee90c0cfc7d4206",
"testharness"
],
"battery-status/META.yml": [
@ -451548,7 +451569,7 @@
"support"
],
"content-security-policy/securitypolicyviolation/targeting.html": [
"10b96e9e61da890ac1f53124441083efb03d00c1",
"28ca32e3dcc345fff5e187eee24e124cdbb250d4",
"testharness"
],
"content-security-policy/securitypolicyviolation/upgrade-insecure-requests-reporting.https.html": [
@ -518336,15 +518357,15 @@
"reftest"
],
"css/css-contain/contain-size-001.html": [
"85bc4f49de1d1d8c58a3677286acfa9a5242512e",
"49dfc41601eb32f80c76a427403beb2f98d3f404",
"reftest"
],
"css/css-contain/contain-size-002.html": [
"bfc6401cfb162929aeff149e3c4476950225dd6d",
"b30b02482da592925b6f4aa278ec82d6b30fe36f",
"reftest"
],
"css/css-contain/contain-size-003.html": [
"1bce52c46a92dd0352209531a5cd697e1c7205f7",
"95596c96910dcfb5fa2d5b5c4261ab910019929c",
"reftest"
],
"css/css-contain/contain-size-004.html": [
@ -518356,7 +518377,7 @@
"reftest"
],
"css/css-contain/contain-size-006.html": [
"f5c17152d98069f75d136cd526bcdd955e70983a",
"f5a5faa49d3090ad2c088ac609e325a86d3d906e",
"reftest"
],
"css/css-contain/contain-size-007.html": [
@ -518380,7 +518401,7 @@
"reftest"
],
"css/css-contain/contain-size-012.html": [
"6823292fdf85f8fa96c22d82ab060d0e97eb37bb",
"b80e605a32b50c51e75e6ea0eab386377ca94e37",
"reftest"
],
"css/css-contain/contain-size-013.html": [
@ -518520,19 +518541,19 @@
"reftest"
],
"css/css-contain/quote-scoping-001.html": [
"b440fdcd8ddea96089f418ea0f7e3bc64ae3acf0",
"8c38e45b1ace138cbb795c77fdece555967e043d",
"reftest"
],
"css/css-contain/quote-scoping-002.html": [
"d79ec2d7f3aeef3d17467c7d4a41879b15119dce",
"9477afdfb1cf3073695a521c28cb9643a66bf00d",
"reftest"
],
"css/css-contain/quote-scoping-003.html": [
"ee0420ee1a42ed47ef65eed8378b0aa0b91cd44c",
"2a909511c3451c98bcdd059d506279923e6ce709",
"reftest"
],
"css/css-contain/quote-scoping-004.html": [
"b31437003365b461dccbb554805c756c4b305f37",
"d86382be08532323baad174808181e338adbc932",
"reftest"
],
"css/css-contain/reference/contain-layout-breaks-002-ref.html": [
@ -518608,7 +518629,7 @@
"support"
],
"css/css-contain/reference/contain-size-004-ref.html": [
"3048d55f11a058ed951dea5bf2f940d27045ffed",
"75ae2bcc2b2d8d019c979c86f2500f9a2ec6ab90",
"support"
],
"css/css-contain/reference/contain-size-005-ref.html": [
@ -518683,6 +518704,10 @@
"49e7b85e878b78af41690bb815bb30a450820598",
"support"
],
"css/css-contain/reference/pass_if_pass_below_clipped.html": [
"044783d1e5488a612d46dca6397346619b539c7b",
"support"
],
"css/css-contain/reference/quote-scoping-001-ref.html": [
"0b0e9c467ac9ee3da86d1f9be0eff98c1f937b0b",
"support"
@ -534803,6 +534828,10 @@
"bcb4e15d80c4225603ff59b92ccfc56dfc90d877",
"testharness"
],
"css/css-logical/animation-004.html": [
"48cb58a29e4183d8e80527795b0000fb2f821bf3",
"testharness"
],
"css/css-logical/cascading-001-ref.html": [
"79a432c4557bbda081a9b1c8d0dd9602c0eb85e5",
"support"
@ -577831,6 +577860,10 @@
"60d88cffb517c0062db338e5ba89e98f7748c280",
"testharness"
],
"custom-elements/range-and-constructors.html": [
"d17c3b71480aa9dd2a75ccbc2cccfd362060eb3c",
"testharness"
],
"custom-elements/reaction-timing.html": [
"9e5bafbedfec42d28eb94c95ed84396941bc61ac",
"testharness"
@ -579400,7 +579433,7 @@
"testharness"
],
"dom/nodes/attributes.html": [
"21188933ea43e7e84888c27bc603a5e2bb0bfaa1",
"dac191b54cb2cafdaf9a71a297d130e571cd5230",
"testharness"
],
"dom/nodes/attributes.js": [
@ -589380,7 +589413,7 @@
"support"
],
"html/dom/historical.html": [
"a36b4b2e92b792b18fb8704d217a089ba07be254",
"b79d35f0b8a383d026920d80d7374887f283a31b",
"testharness"
],
"html/dom/interfaces.https.html": [
@ -598944,7 +598977,7 @@
"testharness"
],
"html/semantics/forms/the-select-element/select-selectedOptions.html": [
"f8e577a8a066e665468e3ebb7420f7c634657d3b",
"6a5c75f2b147ece26f45c83581f5684d4746a4ab",
"testharness"
],
"html/semantics/forms/the-select-element/select-setcustomvalidity.html": [
@ -602323,6 +602356,10 @@
"a3dbdc4e61aad00648c6b9ac34e22c08cbea12ce",
"testharness"
],
"html/syntax/parsing/meta-inhead-insertion-mode.html": [
"4317e4eb14a7fdb92e7ca5594f95e13158198417",
"testharness"
],
"html/syntax/parsing/named-character-references-data.js": [
"48ab30e4738feb1c95b2d4ad0a381c15c61e38d3",
"support"
@ -604248,7 +604285,7 @@
"support"
],
"interfaces/SVG.idl": [
"2ab3741d82f727efb1632bfc1a14611db8677cb8",
"01d87b862b4167f79c43ed1b91ef772f5a78f5fe",
"support"
],
"interfaces/WebCryptoAPI.idl": [
@ -604280,7 +604317,7 @@
"support"
],
"interfaces/background-fetch.idl": [
"fc3ed8dad3555a93221c6c7aa1cae0fbc7a6b402",
"6957604e7df5bed1c6ec0351ebe838d28773e3fe",
"support"
],
"interfaces/battery-status.idl": [
@ -604352,7 +604389,7 @@
"support"
],
"interfaces/css-paint-api.idl": [
"442bbfac1585768d6df64b48960f35a41b7546be",
"c636e2e7d3771fa4d0fb0df06088885552da6e00",
"support"
],
"interfaces/css-properties-values-api.idl": [
@ -604716,7 +604753,7 @@
"support"
],
"interfaces/webrtc.idl": [
"2849a7d2b272d411dc0eddb134739e4f00ce05cc",
"c06e91e6de7b1f44e5f92e2c8eb1d0fabb792b7d",
"support"
],
"interfaces/webusb.idl": [
@ -607959,10 +607996,6 @@
"851691d6c49808393376486e2616ce8d18075b18",
"support"
],
"navigation-timing/nav2_idlharness.html": [
"6d1a1249b91ab555df5cf7521935ce229b5a66ab",
"testharness"
],
"navigation-timing/nav2_test_attributes_exist.html": [
"b6048e061ba057cd971b08e032be717f0ad04d0d",
"testharness"
@ -631764,7 +631797,7 @@
"testharness"
],
"svg/idlharness.window.js": [
"e08adf8978731b7c491c1f26e0edcd05c331f2a3",
"46e8aaee6afa6b67a2fb515d5155849dea214c00",
"testharness"
],
"svg/import/animate-dom-01-f-manual.svg": [
@ -634160,7 +634193,7 @@
"reftest"
],
"svg/painting/reftests/paint-order-001-ref.svg": [
"6e1e016f6f5aa6bff5ca249d75e7b9dce8d11e12",
"7822a80b942fee54a87106d7def13429454cc26e",
"support"
],
"svg/painting/reftests/paint-order-001.svg": [
@ -640124,7 +640157,7 @@
"support"
],
"tools/wptserve/setup.py": [
"194c3372c94a0f38c1616566fa546b4dadf0166f",
"c9c364b8bacc72a6ff77f9d0c811b2d7d1810d13",
"support"
],
"tools/wptserve/tests/functional/__init__.py": [
@ -640543,6 +640576,10 @@
"3bf23b4c230749355607b3af6c1a3bdcc256cf19",
"support"
],
"uievents/idlharness.window.js": [
"928c8c90f0ff4ed99fdec8183cb129bbbea82f3e",
"testharness"
],
"uievents/interface/README.md": [
"970fdd4df3517297e344019930d88fbb53b1a002",
"support"
@ -640559,10 +640596,6 @@
"7ea0bdbf138d2fbcd319db2967dca81602bfb74a",
"manual"
],
"uievents/interfaces.html": [
"0d20f1d71010fdf097b652b7a1c32285e4dfa112",
"testharness"
],
"uievents/keyboard/README.md": [
"38c454dd7c33eefc14022434505321f29dfb4917",
"support"
@ -641327,8 +641360,8 @@
"64e6e9b548233809b217c03e2709f7fbf12fdce9",
"manual"
],
"vibration/idl.html": [
"167090cd67b0169501a6b0b16f8101e8b2b04f84",
"vibration/idlharness.window.js": [
"fbe14daa6119a8213ca58e2233345af015353a1b",
"testharness"
],
"vibration/invalid-values.html": [
@ -643875,6 +643908,10 @@
"e7ccefc655364d20bb240beacc81a4f7a10806dd",
"testharness"
],
"webaudio/the-audio-api/the-delaynode-interface/delaynode-channel-count-1.html": [
"dd964ef9e36b1fb46f58c570d8337917541d80d1",
"testharness"
],
"webaudio/the-audio-api/the-delaynode-interface/delaynode-max-default-delay.html": [
"ef526c96ffcfc2d420b421ab63d02d9a5486f3cc",
"testharness"
@ -647315,8 +647352,8 @@
"8f6c09bf526e462f67563601214c3987b31fe098",
"testharness"
],
"webvtt/api/interfaces.html": [
"5222256d617df55f19a9453c6783d59d183fcef7",
"webvtt/api/idlharness.window.js": [
"53c1ded67493685fb0a7279fa2994bba598c4fd3",
"testharness"
],
"webvtt/categories.json": [
@ -652204,7 +652241,7 @@
"testharness"
],
"xhr/overridemimetype-edge-cases.window.js": [
"6dfe755b767e78b60d0828c29d2b9c57e82e3be7",
"192a696759c4b82852eee753f417fb8a4cf2718d",
"testharness"
],
"xhr/overridemimetype-headers-received-state-force-shiftjis.htm": [

View file

@ -0,0 +1,2 @@
[vh_not_refreshing_on_chrome.html]
expected: FAIL

View file

@ -3,7 +3,7 @@
disabled: iframe thread issue 5247
[single-byte-decoder.html?document]
expected: TIMEOUT
expected: CRASH
[single-byte-decoder.html?XMLHttpRequest]
expected: CRASH

View file

@ -0,0 +1,4 @@
[traverse_the_history_1.html]
[Multiple history traversals from the same task]
expected: FAIL

View file

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

View file

@ -30,6 +30,3 @@
[Set HTTP URL frame location.protocol to data]
expected: FAIL
[Set HTTP URL frame location.protocol to x]
expected: FAIL

View file

@ -3,3 +3,9 @@
[document.all cannot find applet]
expected: FAIL
[HTMLTableHeaderCellElement interface is removed]
expected: FAIL
[HTMLTableDataCellElement interface is removed]
expected: FAIL

View file

@ -0,0 +1,4 @@
[meta-inhead-insertion-mode.html]
[Encoding specified in the 'charset' attribute should have precedence over 'content' attribute.]
expected: FAIL

View file

@ -0,0 +1,4 @@
[idlharness.window.html]
[idlharness]
expected: FAIL

View file

@ -5,29 +5,26 @@
[response.formData() with input: a&b&c]
expected: FAIL
[request.formData() with input: _charset_=windows-1252&test=%C2x]
[response.formData() with input: a=b&c=d&]
expected: FAIL
[request.formData() with input: a=b&c=d&]
[response.formData() with input: _charset_=windows-1252&test=%C2x]
expected: FAIL
[response.formData() with input: a=b&c=d]
expected: FAIL
[urlencoded-parser.any.worker.html]
[response.formData() with input: a&b&c]
expected: FAIL
[request.formData() with input: a&b&c]
expected: FAIL
[response.formData() with input: &&&a=b&&&&c=d&]
[request.formData() with input: a=b&c=d]
expected: FAIL
[request.formData() with input: a=b&c=d&]
[response.formData() with input: _charset_=windows-1252&test=%C2x]
expected: FAIL
[request.formData() with input: &&&a=b&&&&c=d&]
expected: FAIL
[request.formData() with input: _charset_=windows-1252&test=%C2x]
[response.formData() with input: a=b&c=d]
expected: FAIL

View file

@ -0,0 +1,4 @@
[delaynode-channel-count-1.html]
[Test that DelayNode output channelCount matches that of the delayed input]
expected: FAIL

View file

@ -1,6 +1,5 @@
[005.html]
type: testharness
expected: ERROR
[dedicated worker in shared worker in dedicated worker]
expected: FAIL

View file

@ -1,5 +0,0 @@
[complex-glsl-does-not-crash.html]
expected: TIMEOUT
[Overall test]
expected: NOTRUN

View file

@ -1,5 +0,0 @@
[shader-uniform-packing-restrictions.html]
expected: TIMEOUT
[Overall test]
expected: NOTRUN

View file

@ -1,5 +0,0 @@
[shader-with-non-reserved-words.html]
expected: TIMEOUT
[Overall test]
expected: NOTRUN

View file

@ -74,7 +74,7 @@ backgroundFetchTest(async (test, backgroundFetch) => {
// Skip `downloaded`, as the transfer may have started already.
const {type, results} = await getMessageFromServiceWorker();
assert_equals('backgroundfetched', type);
assert_equals('backgroundfetchsuccess', type);
assert_equals(results.length, 1);
assert_true(results[0].url.includes('resources/feature-name.txt'));

View file

@ -2,7 +2,7 @@ importScripts('sw-helpers.js');
async function updateUI(event) {
let updateParams = [];
switch (event.id) {
switch (event.registration.id) {
case 'update-once':
updateParams = [{title: 'Title1'}];
break;
@ -16,7 +16,7 @@ async function updateUI(event) {
.catch(e => e.message);
}
self.addEventListener('backgroundfetched', event => {
self.addEventListener('backgroundfetchsuccess', event => {
event.waitUntil(updateUI(event)
.then(update => sendMessageToDocument({ type: event.type, update })))
});

View file

@ -1,3 +1,4 @@
importScripts('sw-helpers.js');
async function getFetchResult(settledFetch) {
@ -11,7 +12,7 @@ async function getFetchResult(settledFetch) {
};
}
self.addEventListener('backgroundfetched', event => {
self.addEventListener('backgroundfetchsuccess', event => {
event.waitUntil(
event.fetches.values()
.then(fetches => Promise.all(fetches.map(fetch => getFetchResult(fetch))))

View file

@ -2,7 +2,7 @@
// META: script=resources/utils.js
'use strict';
// Covers functionality provided by BackgroundFetchUpdateEvent.updateUI().
// Covers functionality provided by BackgroundFetchUpdateUIEvent.updateUI().
//
// https://wicg.github.io/background-fetch/#backgroundfetchupdateuievent

View file

@ -43,7 +43,7 @@
.then(t.step_func(e => {
assert_equals(e.blockedURI, "inline");
assert_equals(e.lineNumber, 131);
assert_equals(e.columnNumber, 4);
assert_in_array(e.columnNumber, [4, 59]);
assert_equals(e.target, document, "Elements created in this document, but pushed into a same-origin frame trigger on that frame's document, not on this frame's document.");
return watcher.wait_for('securitypolicyviolation');
}))

View file

@ -5,7 +5,7 @@
<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
<meta name=flags content="">
<meta name=assert content="size containment does not apply to non atomic inlines">
<link rel="match" href="../reference/pass_if_pass_below.html">
<link rel="match" href="reference/pass_if_pass_below_clipped.html">
<link rel=help href="https://drafts.csswg.org/css-contain-1/#containment-size">
<style>

View file

@ -5,7 +5,7 @@
<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
<meta name=flags content="">
<meta name=assert content="size containment does not to apply ruby-base, which is an internal ruby element">
<link rel="match" href="../reference/pass_if_pass_below.html">
<link rel="match" href="reference/pass_if_pass_below_clipped.html">
<link rel=help href="https://drafts.csswg.org/css-contain-1/#containment-size">
<link rel=help href="https://drafts.csswg.org/css-display-3/#internal-ruby-element">

View file

@ -5,7 +5,7 @@
<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
<meta name=flags content="">
<meta name=assert content="size containment does not to apply ruby-base-container, which is an internal ruby element">
<link rel="match" href="../reference/pass_if_pass_below.html">
<link rel="match" href="reference/pass_if_pass_below_clipped.html">
<link rel=help href="https://drafts.csswg.org/css-contain-1/#containment-size">
<link rel=help href="https://drafts.csswg.org/css-display-3/#internal-ruby-element">

View file

@ -3,7 +3,7 @@
<title>CSS Containment Test: Size containment on table-cell</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-contain-1/#containment-size">
<link rel="match" href="../reference/pass_if_pass_below.html">
<link rel="match" href="reference/pass_if_pass_below_clipped.html">
<meta name=assert content="Size containment doesn't apply to table-cell elements.">
<style>
div {

View file

@ -3,7 +3,7 @@
<title>CSS Containment Test: Size containment on table</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-contain-1/#containment-size">
<link rel="match" href="../reference/pass_if_pass_below.html">
<link rel="match" href="reference/pass_if_pass_below_clipped.html">
<meta name=assert content="Size containment doesn't apply to table elements.">
<style>
div {

View file

@ -19,7 +19,7 @@ div::before, span::before {
div::after {
content: close-quote;
}
div {
span {
contain: style;
}
</style>

View file

@ -19,10 +19,10 @@ div::before {
div::after, span::after {
content: close-quote;
}
div {
span {
contain: style;
}
</style>
<p>Test passes if the text below is "A9Z" (not including the quotation marks).<p>
<p>Test passes if the text below is "AZZ" (not including the quotation marks).<p>
<div><span></span></div>

View file

@ -23,7 +23,7 @@ span::before {
div::after {
content: close-quote;
}
div {
span {
contain: style;
}
</style>

View file

@ -23,7 +23,7 @@ span::after {
div::after {
content: close-quote;
}
div {
span {
contain: style;
}
</style>

View file

@ -9,6 +9,9 @@ rtc {
display: ruby-text-container;
font-size: 1rem;
}
div {
overflow: hidden;
}
</style>
<p>This test passes if you can see the word PASS below.

View file

@ -0,0 +1,13 @@
<!doctype html>
<html>
<head>
<title>Reference rendering - passes if there is the word "PASS" below</title>
<style>
div { overflow: hidden; }
</style>
</head>
<body>
<p>Test passes if there is the word "PASS" below.</p>
<div>PASS</div>
</body>
</html>

View file

@ -0,0 +1,250 @@
<!doctype html>
<meta charset=utf-8>
<title>Animating CSS logical properties using CSS Transitions</title>
<link rel="help" href="https://drafts.csswg.org/css-logical/#box">
<meta name="assert" content="The specified values of these properties are separate from the specified values of the parallel physical properties, but the flow-relative and physical properties share computed values.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../css-animations/support/testcommon.js"></script>
<div id="log"></div>
<div id="test"></div>
<script>
'use strict';
const testEl = document.getElementById("test");
function makeDeclaration(object = {}) {
return Object.entries(object).map(([prop, val]) => prop + ": " + val).join("; ");
}
/**
* Starts a CSS transition in testEl. By default, the transition will affect the properies
* specified in finalStyles, be linear, last 10 seconds and start halfway, but this can be
* overridden in baseStyles.
*
* @param t The testharness.js Test object.
* @param baseStyles A dictionary object with property names and values to set on the
* element before starting the transition.
* @param finalStyles A dictionary object with property names and values towards which
* the element will transition.
*/
function transition(t, baseStyles, finalStyles) {
// Clear styles from previous test.
testEl.style.cssText = "";
testEl.className = "";
getComputedStyle(testEl).height;
// Set base styles
const defaultTransition = {
"transition-property": Object.keys(finalStyles).join(", "),
"transition-timing-function": "linear",
"transition-duration": "10s",
"transition-delay": "-5s",
};
addStyle(t, {
"#test": makeDeclaration(Object.assign(defaultTransition, baseStyles)),
"#test.transition": makeDeclaration(finalStyles),
});
getComputedStyle(testEl).height;
// Start the transition
testEl.className = "transition";
}
test(t => {
transition(t, {
"block-size": "0px",
}, {
"block-size": "100px",
});
assert_equals(getComputedStyle(testEl).height, '50px');
}, 'Logical properties can be transitioned');
test(t => {
transition(t, {
"block-size": "0px",
"writing-mode": "vertical-rl",
}, {
"block-size": "100px",
});
assert_equals(getComputedStyle(testEl).width, '50px');
assert_equals(getComputedStyle(testEl).height, '0px');
}, 'Logical properties in transitions respect the writing-mode');
test(t => {
transition(t, {
"margin-inline-start": "0px",
"direction": "rtl",
}, {
"margin-inline-start": "100px",
});
assert_equals(getComputedStyle(testEl).marginLeft, '0px');
assert_equals(getComputedStyle(testEl).marginRight, '50px');
}, 'Logical properties in transitions respect the direction');
test(t => {
transition(t, {
"block-size": "0px",
"height": "200px",
}, {
"block-size": "100px",
"height": "300px",
});
assert_equals(getComputedStyle(testEl).height, '250px');
}, 'Declaration order is respected within declaration blocks');
test(t => {
transition(t, {
"transition-timing-function": "step-start",
}, {
"margin-top": "200px",
"margin-block-start": "100px"
});
assert_equals(getComputedStyle(testEl).marginTop, '100px');
}, 'Logical properties are able to override physical properties in declaration blocks');
test(t => {
transition(t, {
"transition-timing-function": "step-start",
}, {
"margin-inline": "200px",
"margin-inline-start": "0px",
"margin-inline-start": "100px",
});
assert_equals(getComputedStyle(testEl).marginLeft, '100px');
}, 'Declaration order is respected amongst logical properties within declaration blocks');
test(t => {
transition(t, {
"block-size": "200px",
}, {
"height": "300px",
});
assert_equals(getComputedStyle(testEl).height, '250px');
}, 'Physical properties and logical properties can be mixed');
test(t => {
transition(t, {
"height": "100px",
"block-size": "200px",
}, {
"block-size": "100px",
"height": "300px",
});
assert_equals(getComputedStyle(testEl).height, '250px');
}, 'Declaration order is respected on each keyframe individually');
test(t => {
transition(t, {
"width": "0px",
"height": "0px",
"block-size": "0px",
}, {
"block-size": "100px",
});
assert_equals(getComputedStyle(testEl).width, '0px');
assert_equals(getComputedStyle(testEl).height, '50px');
testEl.style.writingMode = 'vertical-rl';
assert_equals(getComputedStyle(testEl).width, '50px');
assert_equals(getComputedStyle(testEl).height, '0px');
}, 'Transitions update when the writing-mode is changed');
promise_test(async t => {
transition(t, {
"transition-delay": "-9.9s",
"width": "0px",
"height": "0px",
"block-size": "0px",
}, {
"block-size": "100px",
});
const watcher = new EventWatcher(t, testEl, [ 'transitionend' ]);
await watcher.wait_for('transitionend');
assert_equals(getComputedStyle(testEl).width, '0px');
assert_equals(getComputedStyle(testEl).height, '100px');
testEl.style.transition = 'none';
testEl.style.writingMode = 'vertical-rl';
assert_equals(getComputedStyle(testEl).width, '100px');
assert_equals(getComputedStyle(testEl).height, '0px');
}, 'Filling transitions update when the writing-mode is changed');
test(t => {
transition(t, {
"width": "0px",
"height": "0px",
}, {
"block-size": "100px",
"height": "200px",
});
// Initially we are interpolating the height from 0 to 200px
assert_equals(getComputedStyle(testEl).width, '0px');
assert_equals(getComputedStyle(testEl).height, '100px');
// But once we change the writing-mode, we will be interpolating *both*
// the height (from 0px to 200px) *and* the width (from 0px to 100px).
testEl.style.writingMode = 'vertical-rl';
assert_equals(getComputedStyle(testEl).width, '50px');
assert_equals(getComputedStyle(testEl).height, '100px');
}, 'The number of interpolating properties can be increased when the'
+ ' writing-mode is changed');
test(t => {
transition(t, {
"width": "100px",
"height": "100px",
}, {
"width": "500px",
"block-size": "200px",
});
// Initially we are interpolating the width (100px -> 500px) and the height
// (100px -> 200px).
assert_equals(getComputedStyle(testEl).width, '300px');
assert_equals(getComputedStyle(testEl).height, '150px');
// Once we change the writing-mode, we will be interpolating *only* the
// width (300px -> 200px).
testEl.style.writingMode = 'vertical-rl';
assert_equals(getComputedStyle(testEl).width, '250px');
assert_equals(getComputedStyle(testEl).height, '100px');
}, 'The number of interpolating properties can be decreased when the'
+ ' writing-mode is changed');
test(t => {
addStyle(t, { ':root': '--writingMode: horizontal-tb' });
transition(t, {
"width": "0px",
"height": "0px",
"writing-mode": "var(--writingMode)",
"block-size": "0px",
}, {
"block-size": "100px"
});
assert_equals(getComputedStyle(testEl).width, '0px');
assert_equals(getComputedStyle(testEl).height, '50px');
testEl.style.setProperty('--writingMode', 'vertical-rl');
assert_equals(getComputedStyle(testEl).width, '50px');
assert_equals(getComputedStyle(testEl).height, '0px');
}, 'Transitions update when the writing-mode is changed through a CSS variable');
test(t => {
transition(t, {
"margin-inline-start": "0px",
}, {
"margin-inline-start": "100px",
});
assert_equals(getComputedStyle(testEl).marginLeft, '50px');
assert_equals(getComputedStyle(testEl).marginRight, '0px');
testEl.style.direction = 'rtl';
assert_equals(getComputedStyle(testEl).marginLeft, '0px');
assert_equals(getComputedStyle(testEl).marginRight, '50px');
}, 'Transitions update when the direction is changed');
</script>

View file

@ -0,0 +1,61 @@
<!DOCTYPE html>
<html>
<head>
<title>Custom elements: Range APIs should invoke constructor in tree order</title>
<meta name="author" title="Edgar Chen" href="mailto:echen@mozilla.com">
<link rel="help" href="https://html.spec.whatwg.org/multipage/scripting.html#concept-upgrade-an-element">
<link rel="help" href="https://dom.spec.whatwg.org/#concept-create-element">
<line rel="help" href="https://dom.spec.whatwg.org/#concept-range-extract">
<line rel="help" href="https://dom.spec.whatwg.org/#concept-range-clone">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<div id="log"></div>
<c-e data-index="root">
<c-e data-index="root-0">
<c-e data-index="root-0-0">
<c-e data-index="root-0-0-0"></c-e>
<span id="start"></span>
</c-e>
</c-e>
<c-e data-index="root-1"></c-e>
<span id="end"></span>
</c-e>
<script>
var logs = [];
class CE extends HTMLElement {
constructor() {
super();
logs.push(this.dataset.index);
}
}
customElements.define('c-e', CE);
function getRange() {
const range = new Range();
range.setStart(document.getElementById('start'), 0);
range.setEnd(document.getElementById('end'), 0);
return range;
}
test(function () {
// Clear log for testing.
logs = [];
getRange().cloneContents();
assert_array_equals(logs, ['root-0', 'root-0-0', 'root-1']);
}, 'Range.cloneContents should invoke constructor in tree order');
test(function () {
// Clear log for testing.
logs = [];
getRange().extractContents();
assert_array_equals(logs, ['root-0', 'root-0-0']);
}, 'Range.extractContents should invoke constructor in tree order');
</script>
</body>
</html>

View file

@ -604,7 +604,7 @@ test(function() {
test(function() {
var el = document.createElement("div");
var other = document.createElement("div");
attr = document.createAttribute("foo");
var attr = document.createAttribute("foo");
assert_equals(el.setAttributeNode(attr), null);
assert_equals(attr.ownerElement, el);
assert_throws("INUSE_ATTRIBUTE_ERR",
@ -614,7 +614,7 @@ test(function() {
test(function() {
var el = document.createElement("div");
attr = document.createAttribute("foo");
var attr = document.createAttribute("foo");
assert_equals(el.setAttributeNode(attr), null);
el.setAttribute("bar", "qux");
assert_equals(el.setAttributeNode(attr), attr);

View file

@ -30,4 +30,13 @@ test(() => {
test(() => {
assert_equals(self.getComputedStyle(document.getElementsByTagName("applet")[0], "").cssFloat, "none");
}, "applet is not styled")
// removed in https://github.com/whatwg/html/commit/e383ae23776362cafb2fb4bbba70c8c9080d4b0f
test(() => {
assert_false("HTMLTableDataCellElement" in window);
}, "HTMLTableDataCellElement interface is removed")
test(() => {
assert_false("HTMLTableHeaderCellElement" in window);
}, "HTMLTableHeaderCellElement interface is removed")
</script>

View file

@ -114,12 +114,15 @@ test(() => {
test(() => {
const select = document.getElementById("select-same-object-change");
const before = select.selectedOptions;
assert_equals(before.length, 3);
select.selectedOptions[1].selected = false;
const after = select.selectedOptions;
assert_equals(before, after);
assert_equals(before.length, 2);
assert_equals(after.length, 2);
}, ".selectedOptions should return the same object after selection changes - [SameObject]");
</script>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<html>
<head>
<title>Encoding specified in the "charset" attribute should have precedence over "content" attribute.</title>
<meta http-equiv="Content-Type" content="text/html; charset=koi8-r" charset="iso-8859-15">
<link rel="help" href="https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inhead">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
test(function () {
assert_equals(document.characterSet, "ISO-8859-15");
}, "Encoding specified in the 'charset' attribute should have precedence over 'content' attribute.");
</script>
</body>
</html>

View file

@ -673,11 +673,16 @@ SVGScriptElement includes SVGURIReference;
[Exposed=Window]
interface SVGAElement : SVGGraphicsElement {
[SameObject] readonly attribute SVGAnimatedString target;
[SameObject] readonly attribute SVGAnimatedString download;
[SameObject] readonly attribute SVGAnimatedString rel;
[SameObject] readonly attribute SVGAnimatedString relList;
[SameObject] readonly attribute SVGAnimatedString hreflang;
[SameObject] readonly attribute SVGAnimatedString type;
attribute DOMString download;
attribute USVString ping;
attribute DOMString rel;
[SameObject, PutsForward=value] readonly attribute DOMTokenList relList;
attribute DOMString hreflang;
attribute DOMString type;
attribute DOMString text;
attribute DOMString referrerPolicy;
};
SVGAElement includes SVGURIReference;

View file

@ -1,10 +1,10 @@
// GENERATED CONTENT - DO NOT EDIT
// Content of this file was automatically extracted from the
// "Background Fetch" spec.
// See: https://wicg.github.io/background-fetch/
// Content was automatically extracted by Reffy into reffy-reports
// (https://github.com/tidoust/reffy-reports)
// Source: Background Fetch (https://wicg.github.io/background-fetch/)
partial interface ServiceWorkerGlobalScope {
attribute EventHandler onbackgroundfetched;
attribute EventHandler onbackgroundfetchsuccess;
attribute EventHandler onbackgroundfetchfail;
attribute EventHandler onbackgroundfetchabort;
attribute EventHandler onbackgroundfetchclick;
@ -22,9 +22,12 @@ interface BackgroundFetchManager {
// TODO: in future this should become an async iterator for BackgroundFetchRegistration objects
};
dictionary BackgroundFetchOptions {
dictionary BackgroundFetchUIOptions {
sequence<IconDefinition> icons = [];
DOMString title = "";
};
dictionary BackgroundFetchOptions : BackgroundFetchUIOptions {
unsigned long long downloadTotal = 0;
};
@ -43,73 +46,50 @@ interface BackgroundFetchRegistration : EventTarget {
readonly attribute unsigned long long uploaded;
readonly attribute unsigned long long downloadTotal;
readonly attribute unsigned long long downloaded;
readonly attribute BackgroundFetchActiveFetches activeFetches;
readonly attribute BackgroundFetchState state;
readonly attribute BackgroundFetchFailureReason failureReason;
attribute EventHandler onprogress;
Promise<boolean> abort();
Promise<BackgroundFetchRecord> match(RequestInfo request, optional CacheQueryOptions options);
Promise<sequence<BackgroundFetchRecord>> matchAll(optional RequestInfo request, optional CacheQueryOptions options);
};
enum BackgroundFetchState { "pending", "success", "failure" };
enum BackgroundFetchFailureReason {
"",
// The operation was aborted by the user, or abort() was called.
"aborted",
// A response had a not-ok-status.
"bad-status",
// A fetch failed for other reasons, e.g. CORS, MIX, an invalid partial response,
// or a general network failure for a fetch that cannot be retried.
"fetch-error",
// Storage quota was reached during the operation.
"quota-exceeded",
// The provided downloadTotal was exceeded.
"total-download-exceeded"
};
[Exposed=(Window,Worker)]
interface BackgroundFetchActiveFetches {
Promise<BackgroundFetchActiveFetch> match(RequestInfo request, optional CacheQueryOptions options);
Promise<sequence<BackgroundFetchActiveFetch>> matchAll(RequestInfo request, optional CacheQueryOptions options);
Promise<sequence<BackgroundFetchActiveFetch>> values();
};
[Exposed=(Window,Worker)]
interface BackgroundFetchActiveFetch : BackgroundFetchFetch {
readonly attribute Promise<Response> responseReady;
// In future this will include a fetch observer
};
[Exposed=(Window,Worker)]
interface BackgroundFetchFetch {
interface BackgroundFetchRecord {
readonly attribute Request request;
readonly attribute Promise<Response> responseReady;
// TODO: In future this will include a fetch observer
};
[Constructor(DOMString type, BackgroundFetchEventInit init), Exposed=ServiceWorker]
interface BackgroundFetchEvent : ExtendableEvent {
readonly attribute DOMString id;
readonly attribute BackgroundFetchRegistration registration;
};
dictionary BackgroundFetchEventInit : ExtendableEventInit {
required DOMString id;
required BackgroundFetchRegistration registration;
};
[Constructor(DOMString type, BackgroundFetchSettledEventInit init), Exposed=ServiceWorker]
interface BackgroundFetchSettledEvent : BackgroundFetchEvent {
readonly attribute BackgroundFetchSettledFetches fetches;
[Constructor(DOMString type, BackgroundFetchEventInit init), Exposed=ServiceWorker]
interface BackgroundFetchUpdateUIEvent : BackgroundFetchEvent {
Promise<void> updateUI(optional BackgroundFetchUIOptions options);
};
dictionary BackgroundFetchSettledEventInit : BackgroundFetchEventInit {
required BackgroundFetchSettledFetches fetches;
};
[Exposed=ServiceWorker]
interface BackgroundFetchSettledFetches {
Promise<BackgroundFetchSettledFetch> match(RequestInfo request, optional CacheQueryOptions options);
Promise<sequence<BackgroundFetchSettledFetch>> matchAll(RequestInfo request, optional CacheQueryOptions options);
Promise<sequence<BackgroundFetchSettledFetch>> values();
};
[Exposed=ServiceWorker]
interface BackgroundFetchSettledFetch : BackgroundFetchFetch {
readonly attribute Response? response;
};
[Constructor(DOMString type, BackgroundFetchSettledEventInit init), Exposed=ServiceWorker]
interface BackgroundFetchUpdateEvent : BackgroundFetchSettledEvent {
Promise<void> updateUI(DOMString title);
};
[Constructor(DOMString type, BackgroundFetchClickEventInit init), Exposed=ServiceWorker]
interface BackgroundFetchClickEvent : BackgroundFetchEvent {
readonly attribute BackgroundFetchState state;
};
dictionary BackgroundFetchClickEventInit : BackgroundFetchEventInit {
required BackgroundFetchState state;
};
enum BackgroundFetchState { "pending", "succeeded", "failed" };

View file

@ -1,9 +1,9 @@
// GENERATED CONTENT - DO NOT EDIT
// Content of this file was automatically extracted from the
// "CSS Painting API Level 1" spec.
// See: https://drafts.css-houdini.org/css-paint-api-1/
// Content was automatically extracted by Reffy into reffy-reports
// (https://github.com/tidoust/reffy-reports)
// Source: CSS Painting API Level 1 (https://drafts.css-houdini.org/css-paint-api-1/)
partial interface CSS {
partial namespace CSS {
[SameObject] readonly attribute Worklet paintWorklet;
};

View file

@ -1,7 +1,7 @@
// GENERATED CONTENT - DO NOT EDIT
// Content of this file was automatically extracted from the
// "WebRTC 1.0: Real-time Communication Between Browsers" spec.
// See: https://w3c.github.io/webrtc-pc/
// Content was automatically extracted by Reffy into reffy-reports
// (https://github.com/tidoust/reffy-reports)
// Source: WebRTC 1.0: Real-time Communication Between Browsers (https://w3c.github.io/webrtc-pc/)
dictionary RTCConfiguration {
sequence<RTCIceServer> iceServers;
@ -105,7 +105,7 @@ interface RTCPeerConnection : EventTarget {
readonly attribute RTCSessionDescription? remoteDescription;
readonly attribute RTCSessionDescription? currentRemoteDescription;
readonly attribute RTCSessionDescription? pendingRemoteDescription;
Promise<void> addIceCandidate((RTCIceCandidateInit or RTCIceCandidate) candidate);
Promise<void> addIceCandidate(RTCIceCandidateInit candidate);
readonly attribute RTCSignalingState signalingState;
readonly attribute RTCIceGatheringState iceGatheringState;
readonly attribute RTCIceConnectionState iceConnectionState;
@ -129,7 +129,7 @@ partial interface RTCPeerConnection {
Promise<void> setLocalDescription(RTCSessionDescriptionInit description, VoidFunction successCallback, RTCPeerConnectionErrorCallback failureCallback);
Promise<void> createAnswer(RTCSessionDescriptionCallback successCallback, RTCPeerConnectionErrorCallback failureCallback);
Promise<void> setRemoteDescription(RTCSessionDescriptionInit description, VoidFunction successCallback, RTCPeerConnectionErrorCallback failureCallback);
Promise<void> addIceCandidate((RTCIceCandidateInit or RTCIceCandidate) candidate, VoidFunction successCallback, RTCPeerConnectionErrorCallback failureCallback);
Promise<void> addIceCandidate(RTCIceCandidateInit candidate, VoidFunction successCallback, RTCPeerConnectionErrorCallback failureCallback);
};
callback RTCPeerConnectionErrorCallback = void (DOMException error);

View file

@ -1,73 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Navigation Timing 2 IDL tests</title>
<link rel="author" title="Google" href="http://www.google.com/" />
<link rel="help" href="http://www.w3.org/TR/navigation-timing-2/#sec-PerformanceNavigationTiming"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/WebIDLParser.js"></script>
<script src="/resources/idlharness.js"></script>
</head>
<body>
<pre id='untested_idl' style='display:none'>
interface PerformanceResourceTiming : PerformanceEntry {
readonly attribute DOMString initiatorType;
readonly attribute DOMHighResTimeStamp workerStart;
readonly attribute DOMHighResTimeStamp redirectStart;
readonly attribute DOMHighResTimeStamp redirectEnd;
readonly attribute DOMHighResTimeStamp fetchStart;
readonly attribute DOMHighResTimeStamp domainLookupStart;
readonly attribute DOMHighResTimeStamp domainLookupEnd;
readonly attribute DOMHighResTimeStamp connectStart;
readonly attribute DOMHighResTimeStamp connectEnd;
readonly attribute DOMHighResTimeStamp secureConnectionStart;
readonly attribute DOMHighResTimeStamp requestStart;
readonly attribute DOMHighResTimeStamp responseStart;
readonly attribute DOMHighResTimeStamp responseEnd;
[MeasureAs=PerformanceResourceTimingSizes] readonly attribute unsigned long long transferSize;
[MeasureAs=PerformanceResourceTimingSizes] readonly attribute unsigned long long encodedBodySize;
[MeasureAs=PerformanceResourceTimingSizes] readonly attribute unsigned long long decodedBodySize;
};
interface PerformanceEntry {};
</pre>
<pre id='idl'>
enum NavigationType {
"navigate",
"reload",
"back_forward",
"prerender"
};
interface PerformanceNavigationTiming : PerformanceResourceTiming {
readonly attribute DOMHighResTimeStamp unloadEventStart;
readonly attribute DOMHighResTimeStamp unloadEventEnd;
readonly attribute DOMHighResTimeStamp domInteractive;
readonly attribute DOMHighResTimeStamp domContentLoadedEventStart;
readonly attribute DOMHighResTimeStamp domContentLoadedEventEnd;
readonly attribute DOMHighResTimeStamp domComplete;
readonly attribute DOMHighResTimeStamp loadEventStart;
readonly attribute DOMHighResTimeStamp loadEventEnd;
readonly attribute NavigationType type;
readonly attribute unsigned short redirectCount;
[Default] object toJSON();
};
</pre>
<script>
function test_idl() {
var idl_array = new IdlArray();
idl_array.add_untested_idls(document.getElementById("untested_idl").textContent);
idl_array.add_idls(document.getElementById("idl").textContent);
idl_array.test();
}
test_idl();
</script>
</body>
</html>

View file

@ -11,12 +11,12 @@ const elements = [
'svg',
'g',
'defs',
'Desc',
'desc',
'title',
'symbol',
'use',
'image',
'Switch',
'switch',
'style',
'path',
'rect',
@ -49,8 +49,7 @@ const elements = [
'animate',
'set',
'animateMotion',
'mPath',
'animateColor',
'mpath',
'animateColor',
'animateTransform',
'font',
@ -127,12 +126,12 @@ idl_test(
SVGSVGElement: ['objects.svg'],
SVGGElement: ['objects.g'],
SVGDefsElement: ['objects.defs'],
SVGDescElement: ['objects.Desc'],
SVGDescElement: ['objects.desc'],
SVGTitleElement: ['objects.title'],
SVGSymbolElement: ['objects.symbol'],
SVGUseElement: ['objects.use'],
SVGImageElement: ['objects.image'],
SVGSwitchElement: ['objects.Switch'],
SVGSwitchElement: ['objects.switch'],
SVGStyleElement: ['objects.style'],
SVGPoint: ['objects.svg.createSVGPoint()'],
SVGPointList: ['objects.polygon.points'],
@ -193,7 +192,7 @@ idl_test(
SVGAnimateElement: ['objects.animate'],
SVGSetElement: ['objects.set'],
SVGAnimateMotionElement: ['objects.animateMotion'],
SVGMPathElement: ['objects.mPath'],
SVGMPathElement: ['objects.mpath'],
SVGAnimateColorElement: ['objects.animateColor'],
SVGAnimateTransformElement: ['objects.animateTransform'],
SVGFontElement: ['objects.font'],

View file

@ -51,11 +51,11 @@
<use xlink:href="#path"/>
</g>
<g transform="translate(240,220)">
<use xlink:href="#path"/>
<use xlink:href="#path" style="marker:none"/>
<use xlink:href="#path" style="stroke:none"/>
</g>
<g transform="translate(360,220)">
<use xlink:href="#path"/>
<use xlink:href="#path" style="stroke:none"/>
<use xlink:href="#path" style="marker:none"/>
</g>
<g transform="translate(120,320)">
@ -63,10 +63,10 @@
</g>
<g transform="translate(240,320)">
<use xlink:href="#path"/>
<use xlink:href="#path" style="stroke:none"/>
<use xlink:href="#path" style="stroke:none;marker:none"/>
</g>
<g transform="translate(360,320)">
<use xlink:href="#path"/>
<use xlink:href="#path" style="stroke:none"/>
<use xlink:href="#path" style="marker:none"/>
</g>
</g>

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Before After
Before After

View file

@ -1,7 +1,7 @@
from setuptools import setup
PACKAGE_VERSION = '2.0'
deps = ["six>=1.8"]
deps = ["six>=1.8", "h2==3.0.1"]
setup(name='wptserve',
version=PACKAGE_VERSION,

View file

@ -0,0 +1,20 @@
// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js
'use strict';
idl_test(
['uievents'],
['dom'],
idl_array => {
idl_array.add_objects({
FocusEvent: ['new FocusEvent("event")'],
MouseEvent: ['new MouseEvent("event")'],
WheelEvent: ['new WheelEvent("event")'],
KeyboardEvent: ['new KeyboardEvent("event")'],
CompositionEvent: ['new CompositionEvent("event")'],
UIEvent: ['new UIEvent("event")'],
InputEvent: ['new InputEvent("event")'],
});
}
);

View file

@ -1,48 +0,0 @@
<!doctype html>
<meta charset=utf-8>
<title>UI Events IDL tests</title>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/resources/WebIDLParser.js></script>
<script src=/resources/idlharness.js></script>
<h1>UI Events IDL tests</h1>
<div id=log></div>
<script>
"use strict";
function doTest([dom, uievents]) {
var idlArray = new IdlArray();
idlArray.add_untested_idls(dom);
idlArray.add_idls(uievents);
idlArray.add_objects({
FocusEvent: ['new FocusEvent("event")'],
MouseEvent: ['new MouseEvent("event")'],
WheelEvent: ['new WheelEvent("event")'],
KeyboardEvent: ['new KeyboardEvent("event")'],
CompositionEvent: ['new CompositionEvent("event")'],
UIEvent: ['new UIEvent("event")'],
InputEvent: ['new InputEvent("event")'],
});
idlArray.test();
};
function fetchData(url) {
return fetch(url).then((response) => response.text());
}
function waitForLoad() {
return new Promise(function(resolve) {
addEventListener("load", resolve);
});
}
promise_test(function() {
return Promise.all([fetchData("/interfaces/dom.idl"),
fetchData("/interfaces/uievents.idl")])
.then(doTest);
}, "Test driver");
</script>

View file

@ -1,23 +0,0 @@
<!doctype html>
<meta charset=utf-8>
<title>IDL harness tests for Vibration API</title>
<body>
<h1>Description</h1>
<p>
This test validates the IDL defined by the Vibration API.
</p>
<p>
This test uses <a href="/resources/idlharness.js">idlharness.js</a>
</p>
<div id="log"></div>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/resources/WebIDLParser.js></script>
<script src=/resources/idlharness.js></script>
<script>
var idl_array = new IdlArray();
idl_array.add_untested_idls("interface Navigator {};");
idl_array.add_idls("partial interface Navigator { boolean vibrate ((unsigned long or sequence<unsigned long>) pattern);};");
idl_array.add_objects({Navigator: ['navigator']});
idl_array.test();
</script>

View file

@ -0,0 +1,12 @@
// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js
'use strict';
idl_test(
['vibration'],
['html'],
idl_array => {
idl_array.add_objects({Navigator: ['navigator']});
}
);

View file

@ -0,0 +1,104 @@
<!DOCTYPE html>
<title>Test that DelayNode output channelCount matches that of the delayed input</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
// See https://github.com/WebAudio/web-audio-api/issues/25
// sampleRate is a power of two so that delay times are exact in base-2
// floating point arithmetic.
const SAMPLE_RATE = 32768;
// Arbitrary delay time in frames (but this is assumed a multiple of block
// size below):
const DELAY_FRAMES = 3 * 128;
// Implementations may apply interpolation to input samples, which can spread
// the effect of input with larger channel counts over neighbouring blocks.
// This test ignores enough neighbouring blocks to ignore the effects of
// filter radius of up to this number of frames:
const INTERPOLATION_GRACE = 128;
// Number of frames of DelayNode output that are known to be stereo:
const STEREO_FRAMES = 128;
// The delay will be increased at this frame to switch DelayNode output back
// to mono.
const MONO_OUTPUT_START_FRAME =
DELAY_FRAMES + INTERPOLATION_GRACE + STEREO_FRAMES;
// Number of frames of output that are known to be mono after the known stereo
// and interpolation grace.
const MONO_FRAMES = 128;
// Total length allows for interpolation after effects of stereo input are
// finished and one block to test return to mono output:
const TOTAL_LENGTH =
MONO_OUTPUT_START_FRAME + INTERPOLATION_GRACE + MONO_FRAMES;
// maxDelayTime, is a multiple of block size, because the Gecko implementation
// once had a bug with delayTime = maxDelayTime in this situation:
const MAX_DELAY_FRAMES = TOTAL_LENGTH + INTERPOLATION_GRACE;
promise_test(() => {
let context = new OfflineAudioContext({numberOfChannels: 1,
length: TOTAL_LENGTH,
sampleRate: SAMPLE_RATE});
// Only channel 1 of the splitter is connected to the destination.
let splitter = new ChannelSplitterNode(context, {numberOfOutputs: 2});
splitter.connect(context.destination, 1);
// A gain node has channelCountMode "max" and channelInterpretation
// "speakers", and so will up-mix a mono input when there is stereo input.
let gain = new GainNode(context);
gain.connect(splitter);
// The delay node initially outputs a single channel of silence, when it
// does not have enough signal in its history to output what it has
// previously received. After the delay period, it will then output the
// stereo signal it received.
let delay =
new DelayNode(context,
{maxDelayTime: MAX_DELAY_FRAMES / context.sampleRate,
delayTime: DELAY_FRAMES / context.sampleRate});
// Schedule an increase in the delay to return to mono silent output from
// the unfilled portion of the DelayNode's buffer.
delay.delayTime.setValueAtTime(MAX_DELAY_FRAMES / context.sampleRate,
MONO_OUTPUT_START_FRAME / context.sampleRate);
delay.connect(gain);
let stereoMerger = new ChannelMergerNode(context, {numberOfInputs: 2});
stereoMerger.connect(delay);
let leftOffset = 0.125;
let rightOffset = 0.5;
let leftSource = new ConstantSourceNode(context, {offset: leftOffset});
let rightSource = new ConstantSourceNode(context, {offset: rightOffset});
leftSource.start();
rightSource.start();
leftSource.connect(stereoMerger, 0, 0);
rightSource.connect(stereoMerger, 0, 1);
// Connect a mono source directly to the gain, so that even stereo silence
// will be detected in channel 1 of the gain output because it will cause
// the mono source to be up-mixed.
let monoOffset = 0.25
let monoSource = new ConstantSourceNode(context, {offset: monoOffset});
monoSource.start();
monoSource.connect(gain);
return context.startRendering().
then((buffer) => {
let output = buffer.getChannelData(0);
function assert_samples_equal(startIndex, length, expected, description)
{
for (let i = startIndex; i < startIndex + length; ++i) {
assert_equals(output[i], expected, description + ` at ${i}`);
}
}
assert_samples_equal(0, DELAY_FRAMES - INTERPOLATION_GRACE,
0, "Initial mono");
assert_samples_equal(DELAY_FRAMES + INTERPOLATION_GRACE, STEREO_FRAMES,
monoOffset + rightOffset, "Stereo");
assert_samples_equal(MONO_OUTPUT_START_FRAME + INTERPOLATION_GRACE,
MONO_FRAMES,
0, "Final mono");
});
});
</script>

View file

@ -0,0 +1,15 @@
// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js
'use strict';
idl_test(
['webvtt'],
['html', 'dom'],
idl_array => {
idl_array.add_objects({
VTTCue: ['new VTTCue(0, 0, "")'],
VTTRegion: ['new VTTRegion()'],
});
}
);

View file

@ -1,138 +0,0 @@
<!doctype html>
<meta charset=utf-8>
<title>WebVTT IDL tests</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/resources/WebIDLParser.js></script>
<script src=/resources/idlharness.js></script>
<h1>WebVTT IDL tests</h1>
<div id=log></div>
<script type=text/plain id=untested>
// HTML
interface TextTrackCue : EventTarget {
readonly attribute TextTrack? track;
attribute DOMString id;
attribute double startTime;
attribute double endTime;
attribute boolean pauseOnExit;
attribute EventHandler onenter;
attribute EventHandler onexit;
};
[TreatNonObjectAsNull]
callback EventHandlerNonNull = any (Event event);
typedef EventHandlerNonNull? EventHandler;
// DOM
[Exposed=(Window,Worker)]
interface EventTarget {
void addEventListener(DOMString type, EventListener? callback, optional (AddEventListenerOptions or boolean) options);
void removeEventListener(DOMString type, EventListener? callback, optional (EventListenerOptions or boolean) options);
boolean dispatchEvent(Event event);
};
callback interface EventListener {
void handleEvent(Event event);
};
dictionary EventListenerOptions {
boolean capture = false;
};
dictionary AddEventListenerOptions : EventListenerOptions {
boolean passive = false;
boolean once = false;
};
[Constructor,
Exposed=Window]
interface DocumentFragment : Node {
};
[Exposed=Window]
interface Node : EventTarget {
const unsigned short ELEMENT_NODE = 1;
const unsigned short ATTRIBUTE_NODE = 2;
const unsigned short TEXT_NODE = 3;
const unsigned short CDATA_SECTION_NODE = 4;
const unsigned short ENTITY_REFERENCE_NODE = 5; // historical
const unsigned short ENTITY_NODE = 6; // historical
const unsigned short PROCESSING_INSTRUCTION_NODE = 7;
const unsigned short COMMENT_NODE = 8;
const unsigned short DOCUMENT_NODE = 9;
const unsigned short DOCUMENT_TYPE_NODE = 10;
const unsigned short DOCUMENT_FRAGMENT_NODE = 11;
const unsigned short NOTATION_NODE = 12; // historical
readonly attribute unsigned short nodeType;
readonly attribute DOMString nodeName;
readonly attribute USVString baseURI;
readonly attribute boolean isConnected;
readonly attribute Document? ownerDocument;
Node getRootNode(optional GetRootNodeOptions options);
readonly attribute Node? parentNode;
readonly attribute Element? parentElement;
boolean hasChildNodes();
[SameObject] readonly attribute NodeList childNodes;
readonly attribute Node? firstChild;
readonly attribute Node? lastChild;
readonly attribute Node? previousSibling;
readonly attribute Node? nextSibling;
[CEReactions] attribute DOMString? nodeValue;
[CEReactions] attribute DOMString? textContent;
[CEReactions] void normalize();
[CEReactions, NewObject] Node cloneNode(optional boolean deep = false);
boolean isEqualNode(Node? otherNode);
boolean isSameNode(Node? otherNode); // historical alias of ===
const unsigned short DOCUMENT_POSITION_DISCONNECTED = 0x01;
const unsigned short DOCUMENT_POSITION_PRECEDING = 0x02;
const unsigned short DOCUMENT_POSITION_FOLLOWING = 0x04;
const unsigned short DOCUMENT_POSITION_CONTAINS = 0x08;
const unsigned short DOCUMENT_POSITION_CONTAINED_BY = 0x10;
const unsigned short DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;
unsigned short compareDocumentPosition(Node other);
boolean contains(Node? other);
DOMString? lookupPrefix(DOMString? namespace);
DOMString? lookupNamespaceURI(DOMString? prefix);
boolean isDefaultNamespace(DOMString? namespace);
[CEReactions] Node insertBefore(Node node, Node? child);
[CEReactions] Node appendChild(Node node);
[CEReactions] Node replaceChild(Node node, Node child);
[CEReactions] Node removeChild(Node child);
};
dictionary GetRootNodeOptions {
boolean composed = false;
};
</script>
<script>
"use strict";
// https://w3c.github.io/webvtt/
promise_test(async () => {
const webvttIDL = await fetch('/interfaces/webvtt.idl').then(response =>
response.text(),
);
var idlArray = new IdlArray();
idlArray.add_untested_idls(document.getElementById('untested').textContent);
idlArray.add_idls(webvttIDL);
idlArray.add_objects({
VTTCue: ['new VTTCue(0, 0, "")'],
VTTRegion: ['new VTTRegion()'],
});
idlArray.test();
done();
}, 'webvtt interfaces.');
</script>

View file

@ -5,7 +5,7 @@ async_test(t => {
let secondTime = false;
client.onload = t.step_func(() => {
if(!secondTime) {
assert_equals(client.responseText, "\uFFFD");
assert_equals(client.responseText, "\uFFFD\uFFFD");
secondTime = true;
client.open("GET", testURL);
client.send();
@ -32,7 +32,7 @@ async_test(t => {
async_test(t => {
const client = new XMLHttpRequest();
client.onload = t.step_func_done(() => {
assert_equals(client.responseText, "\uFFFD")
assert_equals(client.responseText, "\uFFFD\uFFFD")
});
client.open("GET", testURL);
client.overrideMimeType("text/plain;charset=342");