mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Update web-platform-tests to revision 424249088dd679888e07bd315dd8ebc98ccf323a
This commit is contained in:
parent
4ad08fff04
commit
bca3835607
93 changed files with 1641 additions and 291 deletions
|
@ -7,7 +7,7 @@
|
|||
expected: FAIL
|
||||
|
||||
[Opening a blob URL in a new window immediately before revoking it works.]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
|
||||
expected: FAIL
|
||||
|
|
|
@ -130339,6 +130339,30 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-lists/list-style-type-string-001a.html": [
|
||||
[
|
||||
"css/css-lists/list-style-type-string-001a.html",
|
||||
[
|
||||
[
|
||||
"/css/css-lists/list-style-type-string-001-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-lists/list-style-type-string-001b.html": [
|
||||
[
|
||||
"css/css-lists/list-style-type-string-001b.html",
|
||||
[
|
||||
[
|
||||
"/css/css-lists/list-style-type-string-001-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-lists/list-style-type-string-002.html": [
|
||||
[
|
||||
"css/css-lists/list-style-type-string-002.html",
|
||||
|
@ -190757,30 +190781,6 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001a.html": [
|
||||
[
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001a.html",
|
||||
[
|
||||
[
|
||||
"/css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001b.html": [
|
||||
[
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001b.html",
|
||||
[
|
||||
[
|
||||
"/css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/masking/clip-path-borderBox-1a.html": [
|
||||
[
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/masking/clip-path-borderBox-1a.html",
|
||||
|
@ -251688,6 +251688,9 @@
|
|||
"css/css-lists/list-marker-with-lineheight-and-overflow-hidden-001-ref.html": [
|
||||
[]
|
||||
],
|
||||
"css/css-lists/list-style-type-string-001-ref.html": [
|
||||
[]
|
||||
],
|
||||
"css/css-lists/list-style-type-string-002-ref.html": [
|
||||
[]
|
||||
],
|
||||
|
@ -263268,12 +263271,6 @@
|
|||
"css/vendor-imports/mozilla/mozilla-central-reftests/images3/support/template-object-position-test.html": [
|
||||
[]
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001-ref.html": [
|
||||
[]
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/reftest.list": [
|
||||
[]
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/masking/blank.html": [
|
||||
[]
|
||||
],
|
||||
|
@ -287766,6 +287763,9 @@
|
|||
"visual-viewport/helper-resize-event-on-load-overflowing-page.html": [
|
||||
[]
|
||||
],
|
||||
"visual-viewport/viewport-no-resize-event-on-overflow-recalc.html.ini": [
|
||||
[]
|
||||
],
|
||||
"visual-viewport/viewport_support.js": [
|
||||
[]
|
||||
],
|
||||
|
@ -320878,6 +320878,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-images/animations/object-position-interpolation.html": [
|
||||
[
|
||||
"css/css-images/animations/object-position-interpolation.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-images/gradient/color-stops-parsing.html": [
|
||||
[
|
||||
"css/css-images/gradient/color-stops-parsing.html",
|
||||
|
@ -322984,6 +322990,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-pseudo/parsing/marker-supported-properties.html": [
|
||||
[
|
||||
"css/css-pseudo/parsing/marker-supported-properties.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-pseudo/parsing/tree-abiding-pseudo-elements.html": [
|
||||
[
|
||||
"css/css-pseudo/parsing/tree-abiding-pseudo-elements.html",
|
||||
|
@ -324550,6 +324562,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-size-adjust/animations/text-size-adjust-interpolation.html": [
|
||||
[
|
||||
"css/css-size-adjust/animations/text-size-adjust-interpolation.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-size-adjust/inheritance.html": [
|
||||
[
|
||||
"css/css-size-adjust/inheritance.html",
|
||||
|
@ -327886,6 +327904,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-transitions/animations/text-shadow-interpolation.html": [
|
||||
[
|
||||
"css/css-transitions/animations/text-shadow-interpolation.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-transitions/before-load-001.html": [
|
||||
[
|
||||
"css/css-transitions/before-load-001.html",
|
||||
|
@ -354792,7 +354816,9 @@
|
|||
"html/cross-origin-opener-policy/popup-redirect-cache.https.html": [
|
||||
[
|
||||
"html/cross-origin-opener-policy/popup-redirect-cache.https.html",
|
||||
{}
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"html/cross-origin-opener-policy/popup-same-origin-non-initial-about-blank.https.html": [
|
||||
|
@ -360530,6 +360556,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"html/semantics/forms/form-submission-0/SubmitEvent.window.js": [
|
||||
[
|
||||
"html/semantics/forms/form-submission-0/SubmitEvent.window.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"html/semantics/forms/form-submission-0/constructing-form-data-set.html": [
|
||||
[
|
||||
"html/semantics/forms/form-submission-0/constructing-form-data-set.html",
|
||||
|
@ -360578,6 +360610,14 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"html/semantics/forms/form-submission-0/implicit-submission.optional.html": [
|
||||
[
|
||||
"html/semantics/forms/form-submission-0/implicit-submission.optional.html",
|
||||
{
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"html/semantics/forms/form-submission-0/submission-checks.window.js": [
|
||||
[
|
||||
"html/semantics/forms/form-submission-0/submission-checks.window.html",
|
||||
|
@ -360796,6 +360836,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"html/semantics/forms/the-button-element/button-submit-children.html": [
|
||||
[
|
||||
"html/semantics/forms/the-button-element/button-submit-children.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"html/semantics/forms/the-button-element/button-type.html": [
|
||||
[
|
||||
"html/semantics/forms/the-button-element/button-type.html",
|
||||
|
@ -369042,6 +369088,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"loading/lazyload/image-loading-lazy-multicol-tentative.html": [
|
||||
[
|
||||
"loading/lazyload/image-loading-lazy-multicol-tentative.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"loading/lazyload/image-loading-lazy.tentative.html": [
|
||||
[
|
||||
"loading/lazyload/image-loading-lazy.tentative.html",
|
||||
|
@ -411912,6 +411964,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"svg/animations/pruning-first-interval.html": [
|
||||
[
|
||||
"svg/animations/pruning-first-interval.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"svg/animations/remove-animation-element-while-animation-is-running.html": [
|
||||
[
|
||||
"svg/animations/remove-animation-element-while-animation-is-running.html",
|
||||
|
@ -425537,6 +425595,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"webrtc/RTCPeerConnection-setLocalDescription-parameterless.https.html": [
|
||||
[
|
||||
"webrtc/RTCPeerConnection-setLocalDescription-parameterless.https.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"webrtc/RTCPeerConnection-setLocalDescription-pranswer.html": [
|
||||
[
|
||||
"webrtc/RTCPeerConnection-setLocalDescription-pranswer.html",
|
||||
|
@ -457048,7 +457112,7 @@
|
|||
"support"
|
||||
],
|
||||
".taskcluster.yml": [
|
||||
"27479fb57e072114e7898494468740b239c7ae92",
|
||||
"6de1e280cecdece123b42950a4c0a35cf85f4a5c",
|
||||
"support"
|
||||
],
|
||||
".well-known/README.md": [
|
||||
|
@ -463356,27 +463420,27 @@
|
|||
"support"
|
||||
],
|
||||
"WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.js": [
|
||||
"c69249047bf2bfceef5001ffb5ee8fbcf9859a6c",
|
||||
"37e3eb4324200c85cb65ee9f077ea7433bff7783",
|
||||
"testharness"
|
||||
],
|
||||
"WebCryptoAPI/derive_bits_keys/ecdh_bits.js": [
|
||||
"fe82ffe5712e39aef2638ccf57a9695fb0197e2b",
|
||||
"5cc7193aebd7942d2636d369328917b7acc3e16a",
|
||||
"support"
|
||||
],
|
||||
"WebCryptoAPI/derive_bits_keys/ecdh_keys.https.any.js": [
|
||||
"b212b92c74b0c318e8c32cb22735a1e29aa610eb",
|
||||
"d8235fce5a74122591ee8b9462a1a66ac5da097c",
|
||||
"testharness"
|
||||
],
|
||||
"WebCryptoAPI/derive_bits_keys/ecdh_keys.js": [
|
||||
"b1a0bcd485d92ef46be7908396c083b75aaf9204",
|
||||
"99008e0cbbe09eab687c62b8935e85a3369e5ba0",
|
||||
"support"
|
||||
],
|
||||
"WebCryptoAPI/derive_bits_keys/hkdf.https.any.js": [
|
||||
"d0d545a7d27222fede323a459fdee81e051f7106",
|
||||
"02492c3741c7d1bb6f300bba51e08b911a1295bd",
|
||||
"testharness"
|
||||
],
|
||||
"WebCryptoAPI/derive_bits_keys/hkdf.js": [
|
||||
"95889676c15960796a5e6d2b242d308b9c1f5afc",
|
||||
"c18a433d7f9036d94fcc649b0294a68e7750e853",
|
||||
"support"
|
||||
],
|
||||
"WebCryptoAPI/derive_bits_keys/hkdf_vectors.js": [
|
||||
|
@ -463384,11 +463448,11 @@
|
|||
"support"
|
||||
],
|
||||
"WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.js": [
|
||||
"539f390c8afc8bd9894f3dea35dcb94a4217489f",
|
||||
"2efbe523f8cd7d5daeb4dce42b893369467f9bfe",
|
||||
"testharness"
|
||||
],
|
||||
"WebCryptoAPI/derive_bits_keys/pbkdf2.js": [
|
||||
"7edc7ea5a2654ec39800cbe33b9a678bc8ee31fa",
|
||||
"0403f382e1479c7c5018e91aba2ceb31b89998dc",
|
||||
"support"
|
||||
],
|
||||
"WebCryptoAPI/derive_bits_keys/pbkdf2_vectors.js": [
|
||||
|
@ -577067,6 +577131,10 @@
|
|||
"8d3b9472b2c9a2ee88dc97f907f9d16eb4fa3755",
|
||||
"support"
|
||||
],
|
||||
"css/css-images/animations/object-position-interpolation.html": [
|
||||
"055cbc8421b6af58e636729268f7323e1710458c",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-images/css-image-fallbacks-and-annotations-ref.html": [
|
||||
"f3193036766e428bf946e81b7df72bfc7f4901db",
|
||||
"support"
|
||||
|
@ -578459,6 +578527,18 @@
|
|||
"422be2304c891fbd0c4f256bc3b87514d935fc81",
|
||||
"visual"
|
||||
],
|
||||
"css/css-lists/list-style-type-string-001-ref.html": [
|
||||
"0d1b1362873483fa1b900e2da3efe603648f791e",
|
||||
"support"
|
||||
],
|
||||
"css/css-lists/list-style-type-string-001a.html": [
|
||||
"f7ed6e3b342d6cd259b3df61a5445f83ab39b0f9",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-lists/list-style-type-string-001b.html": [
|
||||
"f02bf13a73cd0ee025bf3e3d6ae9215feadb12b4",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-lists/list-style-type-string-002-ref.html": [
|
||||
"8694b5f54424c9a6e96209950a5585352a836403",
|
||||
"support"
|
||||
|
@ -584436,7 +584516,7 @@
|
|||
"support"
|
||||
],
|
||||
"css/css-pseudo/marker-font-properties.html": [
|
||||
"a108792fa207b22110a2a70a5d3ebf635033dd5d",
|
||||
"4dd780679845a34699f31febd927dc3b774a5ffd",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-pseudo/marker-inherit-line-height-ref.html": [
|
||||
|
@ -584471,6 +584551,10 @@
|
|||
"94d0c42eca8cffbd5637a1039028925c19e1f851",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-pseudo/parsing/marker-supported-properties.html": [
|
||||
"451aac149dbda8eb605dadc377bfa4186a871a50",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-pseudo/parsing/tree-abiding-pseudo-elements.html": [
|
||||
"05c23a3bc143ce2a005b3686af2eae2cb60cb7ba",
|
||||
"testharness"
|
||||
|
@ -587396,11 +587480,11 @@
|
|||
"reftest"
|
||||
],
|
||||
"css/css-scroll-snap/scroll-target-align-002.html": [
|
||||
"7e82f030e4c3a47e84475ad440a80b907ffbe99f",
|
||||
"01db026dff29c62dbbe27a4e262bb2ed715ba5ef",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-scroll-snap/scroll-target-align-003.html": [
|
||||
"1d6fbebbcd7f652746ece943a240ba2540a10710",
|
||||
"d13efa0abb5d1a13dbb43d78301730b322322ccb",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-scroll-snap/scroll-target-margin-001.html": [
|
||||
|
@ -587408,11 +587492,11 @@
|
|||
"reftest"
|
||||
],
|
||||
"css/css-scroll-snap/scroll-target-margin-002.html": [
|
||||
"a02cf7db17517cb9bcfd56173c4b6f94cb5f1283",
|
||||
"51cf553b3603f237226fa6b7d0ca33089f801a0e",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-scroll-snap/scroll-target-margin-003.html": [
|
||||
"d0434db515a68bb7b280edaebe8428dd705d4fc3",
|
||||
"2ea8eff67c3d17b38031ca5534c8091cfa854409",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-scroll-snap/scroll-target-padding-001.html": [
|
||||
|
@ -587420,11 +587504,11 @@
|
|||
"reftest"
|
||||
],
|
||||
"css/css-scroll-snap/scroll-target-padding-002.html": [
|
||||
"3a0ca3b8519e8dc73ed9a3b19c7af0312c5d69a6",
|
||||
"fbed1e132ecf3805784436c4b13889f61ff8c7ba",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-scroll-snap/scroll-target-padding-003.html": [
|
||||
"1e92e9be72fa17d718a6e121c5e18edf8bbcae3d",
|
||||
"ccbe7b0ec97c9ba14d2ac11df1a24b032e185fe0",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-scroll-snap/scroll-target-snap-001.html": [
|
||||
|
@ -587432,11 +587516,11 @@
|
|||
"reftest"
|
||||
],
|
||||
"css/css-scroll-snap/scroll-target-snap-002.html": [
|
||||
"89df44cba28443c015032301df4c0088ed9fe228",
|
||||
"28f3c124525c68fa3b108019aa6f30b0d878a0bf",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-scroll-snap/scroll-target-snap-003.html": [
|
||||
"3e90347a4dc9ee07e04350a6436309c673a13569",
|
||||
"6fe3901e51c10b9d3d687d7b421b67e1ae6e5896",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-scroll-snap/scrollTo-scrollBy-snaps.html": [
|
||||
|
@ -587480,19 +587564,19 @@
|
|||
"testharness"
|
||||
],
|
||||
"css/css-scroll-snap/support/scroll-target-align-001-iframe.html": [
|
||||
"20922ea18ea104bd613a27fcce58a1f0e9ba70ad",
|
||||
"d86a5e86d01b5806c55123f07254f71d8891dfc0",
|
||||
"support"
|
||||
],
|
||||
"css/css-scroll-snap/support/scroll-target-margin-001-iframe.html": [
|
||||
"8eb5b9c863853a29eeaefa33caa89ae237278071",
|
||||
"2b2c1d2d8c11228fadf4a85ac2c627f4bc3b17c5",
|
||||
"support"
|
||||
],
|
||||
"css/css-scroll-snap/support/scroll-target-padding-001-iframe.html": [
|
||||
"b9467e4347fe3dd005123f7c76e6cda1596e79d8",
|
||||
"9260c81b1c3c5787d7b284601ab2ca350c282e5b",
|
||||
"support"
|
||||
],
|
||||
"css/css-scroll-snap/support/scroll-target-snap-001-iframe.html": [
|
||||
"1a598fa72384b40ee0331c6a3aaeaaa0fac3ae02",
|
||||
"3146a3bf8824d625b1e49032343d1956f496fdf7",
|
||||
"support"
|
||||
],
|
||||
"css/css-scroll-snap/unreachable-snap-positions.html": [
|
||||
|
@ -588963,6 +589047,10 @@
|
|||
"ed3590ceef222740139a4b9d3017478c8728bb30",
|
||||
"support"
|
||||
],
|
||||
"css/css-size-adjust/animations/text-size-adjust-interpolation.html": [
|
||||
"1d7e54b734158eb234a4d653b239f9de04187aac",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-size-adjust/inheritance.html": [
|
||||
"730bcfe2b59534534c2ddec225ceb70fbb7700a3",
|
||||
"testharness"
|
||||
|
@ -602775,6 +602863,10 @@
|
|||
"f11374e47b1876d06231854907c3082b5d4774ab",
|
||||
"support"
|
||||
],
|
||||
"css/css-transitions/animations/text-shadow-interpolation.html": [
|
||||
"c007816ecb04236421ff0aea8861da19c244338a",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transitions/before-load-001.html": [
|
||||
"009260eea430721971053f6d98330f9a9ed56d6d",
|
||||
"testharness"
|
||||
|
@ -620940,7 +621032,7 @@
|
|||
"support"
|
||||
],
|
||||
"css/support/computed-testcommon.js": [
|
||||
"1e87f2a518cb1c7845a99d6a13330e7a13436eca",
|
||||
"c7c7e073203a67844ebcdf029f5c323964a41c99",
|
||||
"support"
|
||||
],
|
||||
"css/support/green.ico": [
|
||||
|
@ -626219,22 +626311,6 @@
|
|||
"fb4b3ad3c7aeab61f44c394926735a97a8767d3c",
|
||||
"support"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001-ref.html": [
|
||||
"0d1b1362873483fa1b900e2da3efe603648f791e",
|
||||
"support"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001a.html": [
|
||||
"f7ed6e3b342d6cd259b3df61a5445f83ab39b0f9",
|
||||
"reftest"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/list-style-type-string-001b.html": [
|
||||
"f02bf13a73cd0ee025bf3e3d6ae9215feadb12b4",
|
||||
"reftest"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/lists-3/reftest.list": [
|
||||
"f914145ab8f075cbbf03968e84d5487047dc0008",
|
||||
"support"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/masking/blank.html": [
|
||||
"abb1b5472843b7bcf63c946897cd66da456033e7",
|
||||
"support"
|
||||
|
@ -626872,7 +626948,7 @@
|
|||
"support"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/reftest.list": [
|
||||
"2d9b459fa8e62ee70bb79567c5727650008f0c41",
|
||||
"97621fe19fe42c95103d8bbd100fece50d0f51be",
|
||||
"support"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/ruby/nested-ruby-pairing-001-ref.html": [
|
||||
|
@ -631100,7 +631176,7 @@
|
|||
"support"
|
||||
],
|
||||
"docs/running-tests/from-local-system.md": [
|
||||
"5a9a776a285ad488509f6c494f43ebbdc8ec108f",
|
||||
"0f337176c47d7c38bcaebd85fd86628e1870dfae",
|
||||
"support"
|
||||
],
|
||||
"docs/running-tests/from-web.md": [
|
||||
|
@ -643516,7 +643592,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"html/cross-origin-opener-policy/popup-redirect-cache.https.html": [
|
||||
"519f710596005b5c460e03cfd398fafbb585ce40",
|
||||
"0524878a03a8d3764c63b77b5c8c4f1453c5a288",
|
||||
"testharness"
|
||||
],
|
||||
"html/cross-origin-opener-policy/popup-redirect-cache.https.html.headers": [
|
||||
|
@ -654415,6 +654491,10 @@
|
|||
"145b5dd3727f995fba56407f07e158d1fb80ba5a",
|
||||
"testharness"
|
||||
],
|
||||
"html/semantics/forms/form-submission-0/SubmitEvent.window.js": [
|
||||
"93dbabb866beeba9e04d0d4f99dde78f448e8dff",
|
||||
"testharness"
|
||||
],
|
||||
"html/semantics/forms/form-submission-0/constructing-form-data-set.html": [
|
||||
"8dad6cdd01a43fa17694c67939e8e5a05ab529e2",
|
||||
"testharness"
|
||||
|
@ -654448,13 +654528,17 @@
|
|||
"support"
|
||||
],
|
||||
"html/semantics/forms/form-submission-0/form-submission-algorithm.html": [
|
||||
"8f61cbc18c95133561e4dd8cbffd3cdb682420e4",
|
||||
"df39b57353c67ebb02014865f28d739bbf24c690",
|
||||
"testharness"
|
||||
],
|
||||
"html/semantics/forms/form-submission-0/getactionurl.html": [
|
||||
"83de220267e7c37374bcd4d4490f27e4488e1126",
|
||||
"testharness"
|
||||
],
|
||||
"html/semantics/forms/form-submission-0/implicit-submission.optional.html": [
|
||||
"109d3b901a53537e9ae2fb17f84d25d4a764b2e2",
|
||||
"testharness"
|
||||
],
|
||||
"html/semantics/forms/form-submission-0/resources/file-submission.py": [
|
||||
"5fc67faa880ffa9300a093aa0ef1f67c3a76eb0c",
|
||||
"support"
|
||||
|
@ -654464,7 +654548,7 @@
|
|||
"support"
|
||||
],
|
||||
"html/semantics/forms/form-submission-0/resources/targetted-form.js": [
|
||||
"6b6685291d2bd3d7dc64f97e2d9e460394d2eb3c",
|
||||
"291251b7e8037ce5c9053d7c4b63142a5783b877",
|
||||
"support"
|
||||
],
|
||||
"html/semantics/forms/form-submission-0/submission-checks.window.js": [
|
||||
|
@ -654631,6 +654715,10 @@
|
|||
"1747bd727aa2fb4deb8f2a81601523776a51a355",
|
||||
"testharness"
|
||||
],
|
||||
"html/semantics/forms/the-button-element/button-submit-children.html": [
|
||||
"06218f4fc9e99efe2d87a9eb85582d3dc84434a1",
|
||||
"testharness"
|
||||
],
|
||||
"html/semantics/forms/the-button-element/button-type.html": [
|
||||
"6cfd6687c707479600534de03156afa698daa314",
|
||||
"testharness"
|
||||
|
@ -661944,7 +662032,7 @@
|
|||
"support"
|
||||
],
|
||||
"interfaces/media-capabilities.idl": [
|
||||
"71bc46d24109f49d616e05e804bcda01dcd45afb",
|
||||
"6fe43d87a80bb7229d5cebc5fbd4cac08f44fa39",
|
||||
"support"
|
||||
],
|
||||
"interfaces/media-playback-quality.idl": [
|
||||
|
@ -662168,7 +662256,7 @@
|
|||
"support"
|
||||
],
|
||||
"interfaces/web-nfc.idl": [
|
||||
"d2ec623e864141152f9ca2ac79b5252b246257bf",
|
||||
"117812a1f276d0bb84de94c2357485d7670ad314",
|
||||
"support"
|
||||
],
|
||||
"interfaces/web-share.idl": [
|
||||
|
@ -662212,7 +662300,7 @@
|
|||
"support"
|
||||
],
|
||||
"interfaces/webrtc.idl": [
|
||||
"2989db5453f5333c8e04e6d237f4142aa9fa85f8",
|
||||
"5a5eb7b10631f14245b158cc6b06a2a178ce1d20",
|
||||
"support"
|
||||
],
|
||||
"interfaces/webusb.idl": [
|
||||
|
@ -662943,6 +663031,10 @@
|
|||
"76eef3a8f45c131bdbf90028f8bcad75be0e5f32",
|
||||
"testharness"
|
||||
],
|
||||
"loading/lazyload/image-loading-lazy-multicol-tentative.html": [
|
||||
"eb69d6810d60a198ae5861211423acb7f76245f9",
|
||||
"testharness"
|
||||
],
|
||||
"loading/lazyload/image-loading-lazy.tentative.html": [
|
||||
"5920eb1882df0a69e0d23c26433bf1b28b9275e9",
|
||||
"testharness"
|
||||
|
@ -668292,7 +668384,7 @@
|
|||
"support"
|
||||
],
|
||||
"native-file-system/script-tests/FileSystemFileHandle-getFile.js": [
|
||||
"88e5593ebad613dc30cbdb838fe481e5353bce69",
|
||||
"6b7d9f9a3171c96aaa2e1312451b3a9cac6c2e9b",
|
||||
"support"
|
||||
],
|
||||
"native-file-system/script-tests/FileSystemWriter.js": [
|
||||
|
@ -677124,11 +677216,11 @@
|
|||
"testharness"
|
||||
],
|
||||
"preload/preload-csp.sub.html": [
|
||||
"62d0c71039b7c06a4299ac71e055ff3786de5c41",
|
||||
"a11214e9ec8e41a518f9fdb6b3db1b96b6e55df9",
|
||||
"testharness"
|
||||
],
|
||||
"preload/preload-default-csp.sub.html": [
|
||||
"9fc11945866834c70c9ad270fb11d37a443ac3d0",
|
||||
"c649a53f874d854c1ed6052b06a7adad01b816e5",
|
||||
"testharness"
|
||||
],
|
||||
"preload/preload-strict-dynamic.html": [
|
||||
|
@ -690736,7 +690828,7 @@
|
|||
"support"
|
||||
],
|
||||
"resources/chromium/nfc-mock.js": [
|
||||
"811c0aeafceed8e16148ae4c678b55733fc6c8b8",
|
||||
"aff72bbad028ecd6b8c6a8023841e08f072adfac",
|
||||
"support"
|
||||
],
|
||||
"resources/chromium/sensor.mojom.js": [
|
||||
|
@ -690796,7 +690888,7 @@
|
|||
"support"
|
||||
],
|
||||
"resources/chromium/webxr-test.js": [
|
||||
"94031657b4b6d2698739eddf0bd4028e0aa8fdea",
|
||||
"d87b3420a85177ad5ef1c5c36cc5c4d785133eba",
|
||||
"support"
|
||||
],
|
||||
"resources/chromium/webxr-test.js.headers": [
|
||||
|
@ -697043,6 +697135,10 @@
|
|||
"e974e38177526e2e4bd8344712c37b00dc2e2bda",
|
||||
"testharness"
|
||||
],
|
||||
"svg/animations/pruning-first-interval.html": [
|
||||
"5a1d1463beaec5b8c3e86406de6138960de8e5ab",
|
||||
"testharness"
|
||||
],
|
||||
"svg/animations/remove-animation-element-while-animation-is-running.html": [
|
||||
"764d25b69f158e028d8ec9fe14e1c43840d00925",
|
||||
"testharness"
|
||||
|
@ -701588,7 +701684,7 @@
|
|||
"support"
|
||||
],
|
||||
"tools/ci/azure/cleanup_win10.yml": [
|
||||
"76852b58cd39f057ae4441b26fd423714b07f445",
|
||||
"f495a0c554537f1161981e19c12c597ba41ef2b2",
|
||||
"support"
|
||||
],
|
||||
"tools/ci/azure/com.apple.Safari.plist": [
|
||||
|
@ -701688,7 +701784,7 @@
|
|||
"support"
|
||||
],
|
||||
"tools/ci/run_tc.py": [
|
||||
"e6d8cd878aacc58f535be562a85ba511e18676f2",
|
||||
"be7dbe082a1709493b62316d15668ea10ae93607",
|
||||
"support"
|
||||
],
|
||||
"tools/ci/taskcluster-run.py": [
|
||||
|
@ -701696,7 +701792,7 @@
|
|||
"support"
|
||||
],
|
||||
"tools/ci/tcdownload.py": [
|
||||
"6e4d960da900c670701807455bd67b247e37f34b",
|
||||
"256726da7b568f32115dfeaa6bc1407490c0d076",
|
||||
"support"
|
||||
],
|
||||
"tools/ci/tests/test_jobs.py": [
|
||||
|
@ -706472,7 +706568,7 @@
|
|||
"support"
|
||||
],
|
||||
"tools/wpt/browser.py": [
|
||||
"bed8c59bf0729ed2327d499f7ec19817055379a6",
|
||||
"fb10d75631305bd66044f033d3ac8f5e8ffb4a0b",
|
||||
"support"
|
||||
],
|
||||
"tools/wpt/commands.json": [
|
||||
|
@ -711503,6 +711599,10 @@
|
|||
"dcb9432da83cb21b6f0403080d3c7b3b5df1659e",
|
||||
"testharness"
|
||||
],
|
||||
"visual-viewport/viewport-no-resize-event-on-overflow-recalc.html.ini": [
|
||||
"75e29ae4c427efbaeb9e08ec4824b90c30c2aead",
|
||||
"support"
|
||||
],
|
||||
"visual-viewport/viewport-offset-manual.html": [
|
||||
"c216e405a3e78765b95c815c45809f152dd97e41",
|
||||
"manual"
|
||||
|
@ -713456,7 +713556,7 @@
|
|||
"manual"
|
||||
],
|
||||
"web-nfc/NDEFReader_options.https.html": [
|
||||
"ab55e2c160bd39710a62238fce795ff63f03c995",
|
||||
"389fff9e041e284358a87e5cc133046d4a579b84",
|
||||
"testharness"
|
||||
],
|
||||
"web-nfc/NDEFReader_scan.https.html": [
|
||||
|
@ -713472,7 +713572,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"web-nfc/NDEFRecord_constructor.https.html": [
|
||||
"cea517d37aa17bf94c3d96c9abd19db5f1fa184c",
|
||||
"1206afb4713dc7e4b48dcc837b3dd708382a9ce2",
|
||||
"testharness"
|
||||
],
|
||||
"web-nfc/NDEFWriter-document-hidden-manual.https.html": [
|
||||
|
@ -713480,7 +713580,7 @@
|
|||
"manual"
|
||||
],
|
||||
"web-nfc/NDEFWriter_push.https.html": [
|
||||
"fbebac946dfbf77a49c11c0472da900ca26759be",
|
||||
"2be655fbbf93cfb0c0c8813f86dc3e98450af720",
|
||||
"testharness"
|
||||
],
|
||||
"web-nfc/README.md": [
|
||||
|
@ -713496,7 +713596,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"web-nfc/resources/nfc-helpers.js": [
|
||||
"80f0882f9f8deff30b0c8c60ecb1bfc7c6df168c",
|
||||
"cf9b510f30424e79412cc35098f63f5afd05707b",
|
||||
"support"
|
||||
],
|
||||
"web-nfc/resources/support-iframe.html": [
|
||||
|
@ -716859,6 +716959,10 @@
|
|||
"80faf85f15e1acff67205efef90bbf5fd491bbc8",
|
||||
"testharness"
|
||||
],
|
||||
"webrtc/RTCPeerConnection-setLocalDescription-parameterless.https.html": [
|
||||
"0cce78bfbca161016721c4e2b122382c4be868f7",
|
||||
"testharness"
|
||||
],
|
||||
"webrtc/RTCPeerConnection-setLocalDescription-pranswer.html": [
|
||||
"1fbb30923f3d1e9abef6940a931a6d426ed01915",
|
||||
"testharness"
|
||||
|
|
|
@ -2,8 +2,14 @@
|
|||
[WebCryptoAPI: deriveBits() Using ECDH]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[ecdh_bits.https.any.html]
|
||||
[WebCryptoAPI: deriveBits() Using ECDH]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2,8 +2,14 @@
|
|||
[WebCryptoAPI: deriveKey() Using ECDH]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[ecdh_keys.https.any.worker.html]
|
||||
[WebCryptoAPI: deriveKey() Using ECDH]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2,38 +2,62 @@
|
|||
[WebCryptoAPI: deriveBits() and deriveKey() Using HKDF]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[hkdf.https.any.worker.html?1001-2000]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using HKDF]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[hkdf.https.any.html?2001-3000]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using HKDF]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[hkdf.https.any.worker.html?2001-3000]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using HKDF]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[hkdf.https.any.html?1001-2000]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using HKDF]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[hkdf.https.any.html?1-1000]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using HKDF]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[hkdf.https.any.worker.html?3001-last]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using HKDF]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[hkdf.https.any.html?3001-last]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using HKDF]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2,88 +2,142 @@
|
|||
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[pbkdf2.https.any.worker.html?1-1000]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[pbkdf2.https.any.worker.html?1001-2000]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[pbkdf2.https.any.worker.html?3001-4000]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[pbkdf2.https.any.html?1001-2000]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[pbkdf2.https.any.html?3001-4000]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[pbkdf2.https.any.worker.html?8001-last]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[pbkdf2.https.any.html?1-1000]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[pbkdf2.https.any.html?5001-6000]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[pbkdf2.https.any.html?7001-8000]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[pbkdf2.https.any.worker.html?4001-5000]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[pbkdf2.https.any.worker.html?7001-8000]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[pbkdf2.https.any.html?2001-3000]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[pbkdf2.https.any.worker.html?6001-7000]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[pbkdf2.https.any.html?8001-last]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[pbkdf2.https.any.html?4001-5000]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[pbkdf2.https.any.worker.html?5001-6000]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[pbkdf2.https.any.html?6001-7000]
|
||||
[WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2]
|
||||
expected: FAIL
|
||||
|
||||
[setup - define tests]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
[[data-expected-height\] 7]
|
||||
expected: FAIL
|
||||
|
||||
[[data-expected-height\] 1]
|
||||
[[data-expected-height\] 3]
|
||||
expected: FAIL
|
||||
|
||||
[[data-expected-height\] 2]
|
||||
[[data-expected-height\] 4]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[abspos-float-with-inline-container.html]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[object-position-interpolation.html]
|
||||
[object-position-interpolation]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[text-shadow-interpolation.html]
|
||||
[text-shadow interpolation]
|
||||
expected: FAIL
|
||||
|
|
@ -9,3 +9,6 @@
|
|||
[throws if handleEvent is thruthy and not callable]
|
||||
expected: NOTRUN
|
||||
|
||||
[doesn't look up handleEvent method on callable event listeners]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2,6 +2,6 @@
|
|||
[listeners are called when <iframe> is resized]
|
||||
expected: FAIL
|
||||
|
||||
[listeners are called correct number of times]
|
||||
[listener that was added twice is called only once]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[contenttype_txt.html]
|
||||
expected: CRASH
|
|
@ -312,9 +312,6 @@
|
|||
[<iframe>: separate response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -324,9 +321,9 @@
|
|||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
[<iframe>: combined response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -53,15 +53,9 @@
|
|||
[combined text/javascript ]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript error]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript ]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,6 +11,3 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%0C]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[traverse_the_history_4.html]
|
||||
[traverse_the_history_2.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_3.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-3.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
[SubmitEvent.window.html]
|
||||
[Successful SubmitEvent constructor]
|
||||
expected: FAIL
|
||||
|
||||
[Failing SubmitEvent constructor]
|
||||
expected: FAIL
|
||||
|
||||
[Successful SubmitEvent constructor; empty dictionary]
|
||||
expected: FAIL
|
||||
|
||||
[Successful SubmitEvent constructor; null submitter]
|
||||
expected: FAIL
|
||||
|
||||
[Successful SubmitEvent constructor; missing dictionary]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
[form-double-submit-2.html]
|
||||
expected: ERROR
|
||||
[preventDefault should allow onclick submit() to succeed]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[form-double-submit-3.html]
|
||||
expected: ERROR
|
||||
[<button> should have the same double-submit protection as <input type=submit>]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[form-double-submit.html]
|
||||
expected: ERROR
|
||||
[default submit action should supersede onclick submit()]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,7 +1,23 @@
|
|||
[form-submission-algorithm.html]
|
||||
expected: TIMEOUT
|
||||
[If form's firing submission events is true, then return; 'submit' event]
|
||||
expected: FAIL
|
||||
|
||||
[If form's firing submission events is true, then return; 'invalid' event]
|
||||
expected: FAIL
|
||||
|
||||
[firing an event named submit; form.requestSubmit(submitter)]
|
||||
expected: FAIL
|
||||
|
||||
[firing an event named submit; clicking a submit button]
|
||||
expected: FAIL
|
||||
|
||||
[Cannot navigate (after constructing the entry list)]
|
||||
expected: TIMEOUT
|
||||
|
||||
[firing an event named submit; form.requestSubmit(null)]
|
||||
expected: FAIL
|
||||
|
||||
[firing an event named submit; form.requestSubmit()]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
[toggleEvent.html]
|
||||
[Calling open twice on 'details' fires only one toggle event]
|
||||
expected: FAIL
|
||||
|
||||
[Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[DOMContentLoaded-defer.html]
|
||||
[The end: DOMContentLoaded and defer scripts]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
[realtimeanalyser-fft-scaling.html]
|
||||
expected: TIMEOUT
|
||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
||||
|
5
tests/wpt/metadata/webmessaging/with-ports/018.html.ini
Normal file
5
tests/wpt/metadata/webmessaging/with-ports/018.html.ini
Normal file
|
@ -0,0 +1,5 @@
|
|||
[018.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, javascript:]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
[sharedworker-in-worker.html]
|
||||
expected: ERROR
|
||||
[Base URL in workers: new SharedWorker()]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[Worker-constructor.html]
|
||||
expected: ERROR
|
|
@ -4,6 +4,19 @@ policy:
|
|||
tasks:
|
||||
$let:
|
||||
event_str: {$json: {$eval: event}}
|
||||
provisionerId:
|
||||
$if: 'taskcluster_root_url == "https://taskcluster.net"'
|
||||
then: aws-provisioner-v1
|
||||
else: proj-wpt
|
||||
workerType:
|
||||
$if: 'taskcluster_root_url == "https://taskcluster.net"'
|
||||
then:
|
||||
$if: event.repository.full_name == 'web-platform-tests/wpt'
|
||||
then:
|
||||
wpt-docker-worker
|
||||
else:
|
||||
github-worker
|
||||
else: ci
|
||||
in:
|
||||
$flattenDeep:
|
||||
- $if: tasks_for == "github-push"
|
||||
|
@ -52,13 +65,8 @@ tasks:
|
|||
taskGroupId: {$eval: 'as_slugid("task group")'}
|
||||
created: {$fromNow: ''}
|
||||
deadline: {$fromNow: '24 hours'}
|
||||
provisionerId: aws-provisioner-v1
|
||||
workerType:
|
||||
$if: event.repository.full_name == 'web-platform-tests/wpt'
|
||||
then:
|
||||
wpt-docker-worker
|
||||
else:
|
||||
github-worker
|
||||
provisionerId: ${provisionerId}
|
||||
workerType: ${workerType}
|
||||
metadata:
|
||||
name: wpt-${browser.name}-${browser.channel}-${chunk[0]}-${chunk[1]}
|
||||
description: >-
|
||||
|
@ -155,13 +163,8 @@ tasks:
|
|||
taskGroupId: {$eval: 'as_slugid("task group")'}
|
||||
created: {$fromNow: ''}
|
||||
deadline: {$fromNow: '24 hours'}
|
||||
provisionerId: aws-provisioner-v1
|
||||
workerType:
|
||||
$if: event.repository.full_name == 'web-platform-tests/wpt'
|
||||
then:
|
||||
wpt-docker-worker
|
||||
else:
|
||||
github-worker
|
||||
provisionerId: ${provisionerId}
|
||||
workerType: ${workerType}
|
||||
metadata:
|
||||
name: ${operation.name}
|
||||
description: ${operation.description}
|
||||
|
@ -321,13 +324,8 @@ tasks:
|
|||
taskGroupId: {$eval: 'as_slugid("task group")'}
|
||||
created: {$fromNow: ''}
|
||||
deadline: {$fromNow: '24 hours'}
|
||||
provisionerId: aws-provisioner-v1
|
||||
workerType:
|
||||
$if: event.repository.full_name == 'web-platform-tests/wpt'
|
||||
then:
|
||||
wpt-docker-worker
|
||||
else:
|
||||
github-worker
|
||||
provisionerId: ${provisionerId}
|
||||
workerType: ${workerType}
|
||||
metadata:
|
||||
name: ${operation.name}
|
||||
description: ${operation.description}
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
// META: title=WebCryptoAPI: deriveBits() Using ECDH
|
||||
// META: script=ecdh_bits.js
|
||||
run_test();
|
||||
|
||||
// Define subtests from a `promise_test` to ensure the harness does not
|
||||
// complete before the subtests are available. `explicit_done` cannot be used
|
||||
// for this purpose because the global `done` function is automatically invoked
|
||||
// by the WPT infrastructure in dedicated worker tests defined using the
|
||||
// "multi-global" pattern.
|
||||
promise_test(define_tests, 'setup - define tests');
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
function run_test() {
|
||||
function define_tests() {
|
||||
// May want to test prefixed implementations.
|
||||
var subtle = self.crypto.subtle;
|
||||
|
||||
|
@ -27,7 +27,7 @@ function run_test() {
|
|||
"P-384": new Uint8Array([224, 189, 107, 206, 10, 239, 140, 164, 136, 56, 166, 226, 252, 197, 126, 103, 185, 197, 232, 134, 12, 95, 11, 233, 218, 190, 197, 62, 69, 78, 24, 160, 161, 116, 196, 136, 136, 162, 100, 136, 17, 91, 45, 201, 241, 223, 165, 45])
|
||||
};
|
||||
|
||||
importKeys(pkcs8, spki, sizes)
|
||||
return importKeys(pkcs8, spki, sizes)
|
||||
.then(function(results) {
|
||||
publicKeys = results.publicKeys;
|
||||
privateKeys = results.privateKeys;
|
||||
|
@ -184,7 +184,6 @@ function run_test() {
|
|||
});
|
||||
}, namedCurve + " asking for too many bits");
|
||||
});
|
||||
done()
|
||||
});
|
||||
|
||||
function importKeys(pkcs8, spki, sizes) {
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
// META: title=WebCryptoAPI: deriveKey() Using ECDH
|
||||
// META: script=ecdh_keys.js
|
||||
run_test();
|
||||
|
||||
// Define subtests from a `promise_test` to ensure the harness does not
|
||||
// complete before the subtests are available. `explicit_done` cannot be used
|
||||
// for this purpose because the global `done` function is automatically invoked
|
||||
// by the WPT infrastructure in dedicated worker tests defined using the
|
||||
// "multi-global" pattern.
|
||||
promise_test(define_tests, 'setup - define tests');
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
function run_test() {
|
||||
function define_tests() {
|
||||
// May want to test prefixed implementations.
|
||||
var subtle = self.crypto.subtle;
|
||||
|
||||
|
@ -27,7 +27,7 @@ function run_test() {
|
|||
"P-384": new Uint8Array([224, 189, 107, 206, 10, 239, 140, 164, 136, 56, 166, 226, 252, 197, 126, 103, 185, 197, 232, 134, 12, 95, 11, 233, 218, 190, 197, 62, 69, 78, 24, 160, 161, 116, 196, 136, 136, 162, 100, 136, 17, 91, 45, 201, 241, 223, 165, 45])
|
||||
};
|
||||
|
||||
importKeys(pkcs8, spki, sizes)
|
||||
return importKeys(pkcs8, spki, sizes)
|
||||
.then(function(results) {
|
||||
publicKeys = results.publicKeys;
|
||||
privateKeys = results.privateKeys;
|
||||
|
@ -153,7 +153,6 @@ function run_test() {
|
|||
});
|
||||
}, namedCurve + " public property value is a secret key");
|
||||
});
|
||||
done();
|
||||
});
|
||||
|
||||
function importKeys(pkcs8, spki, sizes) {
|
||||
|
|
|
@ -6,4 +6,10 @@
|
|||
// META: script=/common/subset-tests.js
|
||||
// META: script=hkdf_vectors.js
|
||||
// META: script=hkdf.js
|
||||
run_test();
|
||||
|
||||
// Define subtests from a `promise_test` to ensure the harness does not
|
||||
// complete before the subtests are available. `explicit_done` cannot be used
|
||||
// for this purpose because the global `done` function is automatically invoked
|
||||
// by the WPT infrastructure in dedicated worker tests defined using the
|
||||
// "multi-global" pattern.
|
||||
promise_test(define_tests, 'setup - define tests');
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
function run_test() {
|
||||
function define_tests() {
|
||||
// May want to test prefixed implementations.
|
||||
var subtle = self.crypto.subtle;
|
||||
|
||||
|
@ -14,7 +14,7 @@ function run_test() {
|
|||
// What kinds of keys can be created with deriveKey? The following:
|
||||
var derivedKeyTypes = testData.derivedKeyTypes;
|
||||
|
||||
setUpBaseKeys(derivedKeys)
|
||||
return setUpBaseKeys(derivedKeys)
|
||||
.then(function(allKeys) {
|
||||
// We get several kinds of base keys. Normal ones that can be used for
|
||||
// derivation operations, ones that lack the deriveBits usage, ones
|
||||
|
@ -232,13 +232,6 @@ function run_test() {
|
|||
|
||||
});
|
||||
});
|
||||
|
||||
done();
|
||||
}, function(err) {
|
||||
subsetTest(test, function(test) {
|
||||
assert_unreached("setUpBaseKeys failed with error '" + err.message + "'");
|
||||
}, "setUpBaseKeys");
|
||||
done();
|
||||
});
|
||||
|
||||
// Deriving bits and keys requires starting with a base key, which is created
|
||||
|
|
|
@ -12,4 +12,10 @@
|
|||
// META: script=/common/subset-tests.js
|
||||
// META: script=pbkdf2_vectors.js
|
||||
// META: script=pbkdf2.js
|
||||
run_test();
|
||||
|
||||
// Define subtests from a `promise_test` to ensure the harness does not
|
||||
// complete before the subtests are available. `explicit_done` cannot be used
|
||||
// for this purpose because the global `done` function is automatically invoked
|
||||
// by the WPT infrastructure in dedicated worker tests defined using the
|
||||
// "multi-global" pattern.
|
||||
promise_test(define_tests, 'setup - define tests');
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
function run_test() {
|
||||
function define_tests() {
|
||||
// May want to test prefixed implementations.
|
||||
var subtle = self.crypto.subtle;
|
||||
|
||||
|
@ -12,7 +12,7 @@ function run_test() {
|
|||
// What kinds of keys can be created with deriveKey? The following:
|
||||
var derivedKeyTypes = testData.derivedKeyTypes;
|
||||
|
||||
setUpBaseKeys(passwords)
|
||||
return setUpBaseKeys(passwords)
|
||||
.then(function(allKeys) {
|
||||
// We get several kinds of base keys. Normal ones that can be used for
|
||||
// derivation operations, ones that lack the deriveBits usage, ones
|
||||
|
@ -229,13 +229,6 @@ function run_test() {
|
|||
|
||||
});
|
||||
});
|
||||
|
||||
done();
|
||||
}, function(err) {
|
||||
subsetTest(test, function(test) {
|
||||
assert_unreached("setUpBaseKeys failed with error '" + err.message + "'");
|
||||
}, "setUpBaseKeys");
|
||||
done();
|
||||
});
|
||||
|
||||
// Deriving bits and keys requires starting with a base key, which is created
|
||||
|
|
|
@ -0,0 +1,158 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="UTF-8">
|
||||
<title>object-position-interpolation</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-images-3/#the-object-position">
|
||||
<meta name="assert" content="object-position supports animation by computation">
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/interpolation-testcommon.js"></script>
|
||||
|
||||
<style>
|
||||
.parent {
|
||||
object-position: 30px 10px;
|
||||
}
|
||||
|
||||
.target {
|
||||
position: relative;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: black;
|
||||
display: inline-block;
|
||||
margin: 20px 0px 20px 0px;
|
||||
object-fit: fill;
|
||||
object-position: 10px 30px;
|
||||
}
|
||||
|
||||
.expected {
|
||||
background-color: green;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
</body>
|
||||
<script>
|
||||
test_interpolation({
|
||||
property: 'object-position',
|
||||
from: neutralKeyframe,
|
||||
to: '20px 20px',
|
||||
}, [
|
||||
{at: -0.3, expect: '7px 33px'},
|
||||
{at: 0, expect: '10px 30px'},
|
||||
{at: 0.5, expect: '15px 25px'},
|
||||
{at: 1, expect: '20px 20px'},
|
||||
{at: 1.5, expect: '25px 15px'},
|
||||
]);
|
||||
|
||||
test_interpolation({
|
||||
property: 'object-position',
|
||||
from: 'initial',
|
||||
to: '20px 20px',
|
||||
}, [
|
||||
{at: -0.3, expect: 'calc(-6px + 65%) calc(-6px + 65%)'},
|
||||
{at: 0, expect: '50% 50%'},
|
||||
{at: 0.5, expect: 'calc(10px + 25%) calc(10px + 25%)'},
|
||||
{at: 1, expect: 'calc(20px + 0%) calc(20px + 0%)'},
|
||||
{at: 1.5, expect: 'calc(30px + -25%) calc(30px + -25%)'},
|
||||
]);
|
||||
|
||||
test_interpolation({
|
||||
property: 'object-position',
|
||||
from: 'inherit',
|
||||
to: '20px 20px',
|
||||
}, [
|
||||
{at: -0.3, expect: '33px 7px'},
|
||||
{at: 0, expect: '30px 10px'},
|
||||
{at: 0.5, expect: '25px 15px'},
|
||||
{at: 1, expect: '20px 20px'},
|
||||
{at: 1.5, expect: '15px 25px'},
|
||||
]);
|
||||
|
||||
test_interpolation({
|
||||
property: 'object-position',
|
||||
from: 'unset',
|
||||
to: '20px 20px',
|
||||
}, [
|
||||
{at: -0.3, expect: 'calc(-6px + 65%) calc(-6px + 65%)'},
|
||||
{at: 0, expect: '50% 50%'},
|
||||
{at: 0.5, expect: 'calc(10px + 25%) calc(10px + 25%)'},
|
||||
{at: 1, expect: 'calc(20px + 0%) calc(20px + 0%)'},
|
||||
{at: 1.5, expect: 'calc(30px + -25%) calc(30px + -25%)'},
|
||||
]);
|
||||
|
||||
test_interpolation({
|
||||
property: 'object-position',
|
||||
from: '50% 50%',
|
||||
to: '100% 100%'
|
||||
}, [
|
||||
{at: -0.3, expect: '35% 35%'},
|
||||
{at: 0, expect: '50% 50%'},
|
||||
{at: 0.5, expect: '75% 75%'},
|
||||
{at: 1, expect: '100% 100%'},
|
||||
{at: 1.5, expect: '125% 125%'}
|
||||
]);
|
||||
|
||||
test_interpolation({
|
||||
property: 'object-position',
|
||||
from: '100px 200px',
|
||||
to: '0px 0px'
|
||||
}, [
|
||||
{at: -0.3, expect: '130px 260px'},
|
||||
{at: 0, expect: '100px 200px'},
|
||||
{at: 0.5, expect: '50px 100px'},
|
||||
{at: 1, expect: '0px 0px'},
|
||||
{at: 1.5, expect: '-50px -100px'}
|
||||
]);
|
||||
|
||||
// Zero seem to be a special case in the old implementation
|
||||
test_interpolation({
|
||||
property: 'object-position',
|
||||
from: '50% 100%',
|
||||
to: '0px 0px'
|
||||
}, [
|
||||
{at: -0.3, expect: '65% 130%'},
|
||||
{at: 0, expect: '50% 100%'},
|
||||
{at: 0.5, expect: '25% 50%'},
|
||||
{at: 1, expect: '0px 0px'},
|
||||
{at: 1.5, expect: '-25% -50%'}
|
||||
]);
|
||||
|
||||
test_interpolation({
|
||||
property: 'object-position',
|
||||
from: '50% 100%',
|
||||
to: '50px 100px'
|
||||
}, [
|
||||
{at: -0.3, expect: 'calc(65% + -15px) calc(130% + -30px)'},
|
||||
{at: 0, expect: '50% 100%'},
|
||||
{at: 0.5, expect: 'calc(25% + 25px) calc(50% + 50px)'},
|
||||
{at: 1, expect: 'calc(0% + 50px) calc(0% + 100px)'},
|
||||
{at: 1.5, expect: 'calc(-25% + 75px) calc(-50% + 150px)'}
|
||||
]);
|
||||
|
||||
test_interpolation({
|
||||
property: 'object-position',
|
||||
from: 'center',
|
||||
to: 'top right'
|
||||
}, [
|
||||
{at: -0.3, expect: '35% 65%'},
|
||||
{at: 0, expect: '50% 50%'},
|
||||
{at: 0.5, expect: '75% 25%'},
|
||||
{at: 1, expect: '100% 0%'},
|
||||
{at: 1.5, expect: '125% -25%'}
|
||||
]);
|
||||
|
||||
test_interpolation({
|
||||
property: 'object-position',
|
||||
from: 'center',
|
||||
to: 'right 0% bottom 50%',
|
||||
}, [
|
||||
{at: -0.5, expect: '25% 50%'},
|
||||
{at: 0, expect: 'center'},
|
||||
{at: 0.3, expect: '65% 50%'},
|
||||
{at: 0.5, expect: '75% 50%'},
|
||||
{at: 0.9, expect: '95% 50%'},
|
||||
{at: 1, expect: '100% 50%'},
|
||||
{at: 1.5, expect: '125% 50%'},
|
||||
{at: 2, expect: '150% 50%'},
|
||||
]);
|
||||
</script>
|
||||
|
|
@ -16,7 +16,7 @@ li {
|
|||
list-style-type: lower-alpha;
|
||||
}
|
||||
|
||||
li::marker {
|
||||
li::marker, span {
|
||||
font-family: sans-serif;
|
||||
font-size: 24px;
|
||||
font-style: italic;
|
||||
|
@ -27,7 +27,7 @@ li::marker {
|
|||
</head>
|
||||
<body>
|
||||
<ol>
|
||||
<li><span style="font-size: 24px"><!-- FIXME: Needed to ensure consistent baseline position with expected result in WebKit (why?). --></span></li>
|
||||
<li><span><!-- FIXME: Needed to ensure consistent baseline position with expected result in Chromium and WebKit (why?). --></span></li>
|
||||
</ol>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Pseudo-Elements Test: Supported properties in ::marker</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#marker-pseudo">
|
||||
<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
|
||||
<meta name="assert" content="This test checks that only certain properties apply to ::marker pseudo-elements." />
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/computed-testcommon.js"></script>
|
||||
<div id="log"></div>
|
||||
<ul>
|
||||
<li id="target">target</li>
|
||||
</ul>
|
||||
<script>
|
||||
// ::marker supports all font properties.
|
||||
test_pseudo_computed_value("::marker", "font", "italic small-caps 900 expanded 25px / 50px Ahem",
|
||||
["italic small-caps 900 expanded 25px Ahem", "italic small-caps 900 expanded 25px/normal Ahem"]);
|
||||
test_pseudo_computed_value("::marker", "font-family", "Ahem");
|
||||
test_pseudo_computed_value("::marker", "font-feature-settings", "\"smcp\"");
|
||||
test_pseudo_computed_value("::marker", "font-kerning", "none");
|
||||
test_pseudo_computed_value("::marker", "font-size", "25px");
|
||||
test_pseudo_computed_value("::marker", "font-size-adjust", "1");
|
||||
test_pseudo_computed_value("::marker", "font-stretch", "expanded", ["expanded", "125%"]);
|
||||
test_pseudo_computed_value("::marker", "font-style", "italic");
|
||||
test_pseudo_computed_value("::marker", "font-synthesis", "none");
|
||||
test_pseudo_computed_value("::marker", "font-variant", "small-caps");
|
||||
test_pseudo_computed_value("::marker", "font-variant-caps", "small-caps");
|
||||
test_pseudo_computed_value("::marker", "font-variant-east-asian", "full-width");
|
||||
test_pseudo_computed_value("::marker", "font-variant-ligatures", "historical-ligatures");
|
||||
test_pseudo_computed_value("::marker", "font-variant-numeric", "slashed-zero");
|
||||
test_pseudo_computed_value("::marker", "font-variant-position", "sub");
|
||||
test_pseudo_computed_value("::marker", "font-weight", "900");
|
||||
|
||||
// ::marker supports `color`
|
||||
test_pseudo_computed_value("::marker", "color", "rgb(0, 100, 200)");
|
||||
|
||||
// ::marker supports `text-combine-upright`, `unicode-bidi` and `direction`
|
||||
test_pseudo_computed_value("::marker", "text-combine-upright", "none");
|
||||
test_pseudo_computed_value("::marker", "unicode-bidi", "plaintext");
|
||||
test_pseudo_computed_value("::marker", "direction", "rtl");
|
||||
|
||||
// ::marker supports `content`
|
||||
test_pseudo_computed_value("::marker", "content", "\"foo\"");
|
||||
|
||||
// ::marker does NOT support layout properties
|
||||
test_pseudo_computed_value("::marker", "display", "none", ["block", "inline"]);
|
||||
test_pseudo_computed_value("::marker", "position", "absolute", "static");
|
||||
test_pseudo_computed_value("::marker", "float", "right", "none");
|
||||
|
||||
// ::marker does NOT support list properties despite being affected by them,
|
||||
// they apply to the list item instead.
|
||||
test_pseudo_computed_value("::marker", "list-style", "inside url('foo') decimal", "outside none disc");
|
||||
test_pseudo_computed_value("::marker", "list-style-image", "url('foo')", "none");
|
||||
test_pseudo_computed_value("::marker", "list-style-position", "inside", "outside");
|
||||
test_pseudo_computed_value("::marker", "list-style-type", "decimal", "disc");
|
||||
|
||||
// ::marker does NOT support `line-height` because, despite being a
|
||||
// longhand of `font`, it's not a font property.
|
||||
test_pseudo_computed_value("::marker", "line-height", "50px", "normal");
|
||||
</script>
|
|
@ -31,6 +31,9 @@
|
|||
scroll-snap-align: center; }
|
||||
#stripe { background: green; } /* color part of the snap area */
|
||||
.fail { color: red; } /* make failing more obvious */
|
||||
|
||||
/* emulate `scrollbar-width: none` for browsers that don't support it yet */
|
||||
::-webkit-scrollbar { display: none; }
|
||||
</style>
|
||||
|
||||
<div id='instructions'>Test passes if there is a green stripe across the second quarter of the box below and no red.</div>
|
||||
|
|
|
@ -32,6 +32,9 @@
|
|||
scroll-snap-align: center; }
|
||||
#stripe { background: green; } /* color part of the snap area */
|
||||
.fail { color: red; } /* make failing more obvious */
|
||||
|
||||
/* emulate `scrollbar-width: none` for browsers that don't support it yet */
|
||||
::-webkit-scrollbar { display: none; }
|
||||
</style>
|
||||
|
||||
<div id='instructions'>Test passes if there is a green stripe across the second quarter of the box below and no red.</div>
|
||||
|
|
|
@ -28,6 +28,9 @@
|
|||
#target { scroll-margin: 2em 0 1em; } /* snap area is exact fit for snapport */
|
||||
#stripe { background: green; } /* color part of the snap area */
|
||||
.fail { color: red; } /* make failing more obvious */
|
||||
|
||||
/* emulate `scrollbar-width: none` for browsers that don't support it yet */
|
||||
::-webkit-scrollbar { display: none; }
|
||||
</style>
|
||||
|
||||
<div id='instructions'>Test passes if there is a green stripe across the second quarter of the box below and no red.</div>
|
||||
|
|
|
@ -30,6 +30,9 @@
|
|||
#target { scroll-margin: 2em 0 1em; } /* snap area is exact fit for snapport */
|
||||
#stripe { background: green; } /* color part of the snap area */
|
||||
.fail { color: red; } /* make failing more obvious */
|
||||
|
||||
/* emulate `scrollbar-width: none` for browsers that don't support it yet */
|
||||
::-webkit-scrollbar { display: none; }
|
||||
</style>
|
||||
|
||||
<div id='instructions'>Test passes if there is a green stripe across the second quarter of the box below and no red.</div>
|
||||
|
|
|
@ -27,6 +27,9 @@
|
|||
.container { scroll-padding: 2em 0 1em; } /* snap area is exact fit for snapport */
|
||||
#stripe { background: green; } /* color part of the snap area */
|
||||
.fail { color: red; } /* make failing more obvious */
|
||||
|
||||
/* emulate `scrollbar-width: none` for browsers that don't support it yet */
|
||||
::-webkit-scrollbar { display: none; }
|
||||
</style>
|
||||
|
||||
<div id='instructions'>Test passes if there is a green stripe across the second quarter of the box below and no red.</div>
|
||||
|
|
|
@ -29,6 +29,9 @@
|
|||
.container { scroll-padding: 2em 0 1em; } /* snap area is exact fit for snapport */
|
||||
#stripe { background: green; } /* color part of the snap area */
|
||||
.fail { color: red; } /* make failing more obvious */
|
||||
|
||||
/* emulate `scrollbar-width: none` for browsers that don't support it yet */
|
||||
::-webkit-scrollbar { display: none; }
|
||||
</style>
|
||||
|
||||
<div id='instructions'>Test passes if there is a green stripe across the second quarter of the box below and no red.</div>
|
||||
|
|
|
@ -33,6 +33,8 @@
|
|||
/* Try to foil the UA */
|
||||
.foilup { margin-bottom: -1em; scroll-snap-align: start; }
|
||||
.foildn { margin-top: -1em; scroll-snap-align: end; }
|
||||
/* emulate `scrollbar-width: none` for browsers that don't support it yet */
|
||||
::-webkit-scrollbar { display: none; }
|
||||
</style>
|
||||
|
||||
<div id='instructions'>Test passes if there is a green stripe across the second quarter of the box below and no red.</div>
|
||||
|
|
|
@ -35,6 +35,9 @@
|
|||
/* Try to foil the UA */
|
||||
.foilup { margin-bottom: -1em; scroll-snap-align: start; }
|
||||
.foildn { margin-top: -1em; scroll-snap-align: end; }
|
||||
|
||||
/* emulate `scrollbar-width: none` for browsers that don't support it yet */
|
||||
::-webkit-scrollbar { display: none; }
|
||||
</style>
|
||||
|
||||
<div id='instructions'>Test passes if there is a green stripe across the second quarter of the box below and no red.</div>
|
||||
|
|
|
@ -19,7 +19,9 @@
|
|||
scroll-snap-align: center; }
|
||||
#stripe { background: green; } /* color part of the snap area */
|
||||
.fail { color: red; } /* make failing more obvious */
|
||||
}
|
||||
|
||||
/* emulate `scrollbar-width: none` for browsers that don't support it yet */
|
||||
::-webkit-scrollbar { display: none; }
|
||||
</style>
|
||||
|
||||
<div></div>
|
||||
|
|
|
@ -17,7 +17,9 @@
|
|||
#target { scroll-margin: 2em 0 1em; } /* snap area is exact fit for snapport */
|
||||
#stripe { background: green; } /* color part of the snap area */
|
||||
.fail { color: red; } /* make failing more obvious */
|
||||
}
|
||||
|
||||
/* emulate `scrollbar-width: none` for browsers that don't support it yet */
|
||||
::-webkit-scrollbar { display: none; }
|
||||
</style>
|
||||
|
||||
<div></div>
|
||||
|
|
|
@ -17,7 +17,9 @@
|
|||
html { scroll-padding: 2em 0 1em; } /* snap area is exact fit for snapport */
|
||||
#stripe { background: green; } /* color part of the snap area */
|
||||
.fail { color: red; } /* make failing more obvious */
|
||||
}
|
||||
|
||||
/* emulate `scrollbar-width: none` for browsers that don't support it yet */
|
||||
::-webkit-scrollbar { display: none; }
|
||||
</style>
|
||||
|
||||
<div></div>
|
||||
|
|
|
@ -25,6 +25,9 @@
|
|||
/* Try to foil the UA */
|
||||
.foilup { margin-bottom: -1em; scroll-snap-align: start; }
|
||||
.foildn { margin-top: -1em; scroll-snap-align: end; }
|
||||
|
||||
/* emulate `scrollbar-width: none` for browsers that don't support it yet */
|
||||
::-webkit-scrollbar { display: none; }
|
||||
</style>
|
||||
|
||||
<div></div>
|
||||
|
|
|
@ -0,0 +1,104 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="UTF-8">
|
||||
<title>text-size-adjust-interpolation</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-size-adjust/#adjustment-control">
|
||||
<meta name="assert" content="text-size-adjust supports animation">
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/interpolation-testcommon.js"></script>
|
||||
|
||||
<style type="text/css">
|
||||
.container {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.parent {
|
||||
text-size-adjust: 70%;
|
||||
}
|
||||
|
||||
.target {
|
||||
text-size-adjust: 60%;
|
||||
}
|
||||
|
||||
.expected {
|
||||
color: green;
|
||||
margin-right: 30px;
|
||||
}
|
||||
</style>
|
||||
<body></body>
|
||||
<template id="target-template">
|
||||
<span class="container">
|
||||
<div class="target">x</span>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
test_interpolation({
|
||||
property: 'text-size-adjust',
|
||||
from: neutralKeyframe,
|
||||
to: '50%',
|
||||
}, [
|
||||
{at: -2, expect: '80%'},
|
||||
{at: -0.3, expect: '63%'},
|
||||
{at: 0, expect: '60%'},
|
||||
{at: 0.3, expect: '57%'},
|
||||
{at: 0.6, expect: '54%'},
|
||||
{at: 1, expect: '50%'},
|
||||
{at: 1.5, expect: '45%'},
|
||||
]);
|
||||
|
||||
test_no_interpolation({
|
||||
property: 'text-size-adjust',
|
||||
from: 'initial',
|
||||
to: '70%',
|
||||
});
|
||||
|
||||
test_interpolation({
|
||||
property: 'text-size-adjust',
|
||||
from: 'inherit', // 70%
|
||||
to: '50%',
|
||||
}, [
|
||||
{at: -2, expect: '110%'},
|
||||
{at: -0.3, expect: '76%'},
|
||||
{at: 0, expect: '70%'},
|
||||
{at: 0.3, expect: '64%'},
|
||||
{at: 0.6, expect: '58%'},
|
||||
{at: 1, expect: '50%'},
|
||||
{at: 1.5, expect: '40%'},
|
||||
]);
|
||||
|
||||
test_interpolation({
|
||||
property: 'text-size-adjust',
|
||||
from: 'unset',
|
||||
to: '50%',
|
||||
}, [
|
||||
{at: -2, expect: '110%'},
|
||||
{at: -0.3, expect: '76%'},
|
||||
{at: 0, expect: '70%'},
|
||||
{at: 0.3, expect: '64%'},
|
||||
{at: 0.6, expect: '58%'},
|
||||
{at: 1, expect: '50%'},
|
||||
{at: 1.5, expect: '40%'},
|
||||
]);
|
||||
|
||||
|
||||
test_interpolation({
|
||||
property: 'text-size-adjust',
|
||||
from: '10%',
|
||||
to: '0%'
|
||||
}, [
|
||||
{at: -2, expect: '30%'},
|
||||
{at: -0.3, expect: '13%'},
|
||||
{at: 0, expect: '10%'},
|
||||
{at: 0.3, expect: '7%'},
|
||||
{at: 0.6, expect: '4%'},
|
||||
{at: 1, expect: '0%'},
|
||||
{at: 1.5, expect: '0%'}, // text-size-adjust can't be negative
|
||||
]);
|
||||
|
||||
test_no_interpolation({
|
||||
property: 'text-size-adjust',
|
||||
from: 'none',
|
||||
to: '100%'
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,110 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="UTF-8">
|
||||
<title>text-shadow interpolation</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#text-shadow-property">
|
||||
<meta name="assert" content="text-shadow supports animation">
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/interpolation-testcommon.js"></script>
|
||||
|
||||
<style>
|
||||
.parent {
|
||||
text-shadow: 30px 10px 30px orange;
|
||||
}
|
||||
|
||||
.target {
|
||||
display: inline-block;
|
||||
font-size: 60pt;
|
||||
margin-right: 20px;
|
||||
margin-bottom: 30px;
|
||||
color: green;
|
||||
text-shadow: 10px 30px 10px orange;
|
||||
}
|
||||
|
||||
.expected {
|
||||
margin-right: 40px;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<template id="target-template">T</template>
|
||||
<script>
|
||||
test_interpolation({
|
||||
property: 'text-shadow',
|
||||
from: neutralKeyframe,
|
||||
to: 'green 20px 20px 20px',
|
||||
}, [
|
||||
{at: -0.3, expect: 'rgb(255, 176, 0) 7px 33px 7px'},
|
||||
{at: 0, expect: 'rgb(255, 165, 0) 10px 30px 10px'},
|
||||
{at: 0.3, expect: 'rgb(179, 154, 0) 13px 27px 13px'},
|
||||
{at: 0.6, expect: 'rgb(102, 143, 0) 16px 24px 16px'},
|
||||
{at: 1, expect: 'rgb(0, 128, 0) 20px 20px 20px'},
|
||||
{at: 1.5, expect: 'rgb(0, 110, 0) 25px 15px 25px'},
|
||||
]);
|
||||
|
||||
test_interpolation({
|
||||
property: 'text-shadow',
|
||||
from: 'initial',
|
||||
to: 'green 20px 20px 20px',
|
||||
}, [
|
||||
{at: -0.3, expect: 'rgba(0, 0, 0, 0) -6px -6px 0px'},
|
||||
{at: 0, expect: 'rgba(0, 0, 0, 0) 0px 0px 0px'},
|
||||
{at: 0.3, expect: 'rgba(0, 128, 0, 0.3) 6px 6px 6px'},
|
||||
{at: 0.6, expect: 'rgba(0, 128, 0, 0.6) 12px 12px 12px'},
|
||||
{at: 1, expect: 'rgb(0, 128, 0) 20px 20px 20px'},
|
||||
{at: 1.5, expect: 'rgb(0, 192, 0) 30px 30px 30px'},
|
||||
]);
|
||||
|
||||
test_interpolation({
|
||||
property: 'text-shadow',
|
||||
from: 'inherit',
|
||||
to: 'green 20px 20px 20px',
|
||||
}, [
|
||||
{at: -0.3, expect: 'rgb(255, 176, 0) 33px 7px 33px'},
|
||||
{at: 0, expect: 'rgb(255, 165, 0) 30px 10px 30px'},
|
||||
{at: 0.3, expect: 'rgb(179, 154, 0) 27px 13px 27px'},
|
||||
{at: 0.6, expect: 'rgb(102, 143, 0) 24px 16px 24px'},
|
||||
{at: 1, expect: 'rgb(0, 128, 0) 20px 20px 20px'},
|
||||
{at: 1.5, expect: 'rgb(0, 110, 0) 15px 25px 15px'},
|
||||
]);
|
||||
|
||||
test_interpolation({
|
||||
property: 'text-shadow',
|
||||
from: 'unset',
|
||||
to: 'green 20px 20px 20px',
|
||||
}, [
|
||||
{at: -0.3, expect: 'rgb(255, 176, 0) 33px 7px 33px'},
|
||||
{at: 0, expect: 'rgb(255, 165, 0) 30px 10px 30px'},
|
||||
{at: 0.3, expect: 'rgb(179, 154, 0) 27px 13px 27px'},
|
||||
{at: 0.6, expect: 'rgb(102, 143, 0) 24px 16px 24px'},
|
||||
{at: 1, expect: 'rgb(0, 128, 0) 20px 20px 20px'},
|
||||
{at: 1.5, expect: 'rgb(0, 110, 0) 15px 25px 15px'},
|
||||
]);
|
||||
|
||||
test_interpolation({
|
||||
property: 'text-shadow',
|
||||
from: 'black 15px 10px 5px',
|
||||
to: 'orange -15px -10px 25px',
|
||||
}, [
|
||||
{at: -0.3, expect: 'rgb(0, 0, 0) 24px 16px 0px'},
|
||||
{at: 0, expect: 'rgb(0, 0, 0) 15px 10px 5px'},
|
||||
{at: 0.3, expect: 'rgb(77, 50, 0) 6px 4px 11px'},
|
||||
{at: 0.6, expect: 'rgb(153, 99, 0) -3px -2px 17px'},
|
||||
{at: 1, expect: 'rgb(255, 165, 0) -15px -10px 25px'},
|
||||
{at: 1.5, expect: 'rgb(255, 248, 0) -30px -20px 35px'},
|
||||
]);
|
||||
|
||||
test_interpolation({
|
||||
property: 'text-shadow',
|
||||
from: 'black 10px 10px 10px',
|
||||
to: 'currentColor 10px 10px 10px',
|
||||
}, [
|
||||
{at: -0.3, expect: 'rgb(0, 0, 0) 10px 10px 10px'},
|
||||
{at: 0, expect: 'rgb(0, 0, 0) 10px 10px 10px'},
|
||||
{at: 0.3, expect: 'rgb(0, 38, 0) 10px 10px 10px'},
|
||||
{at: 0.6, expect: 'rgb(0, 77, 0) 10px 10px 10px'},
|
||||
{at: 1, expect: 'rgb(0, 128, 0) 10px 10px 10px'},
|
||||
{at: 1.5, expect: 'rgb(0, 192, 0) 10px 10px 10px'},
|
||||
]);
|
||||
</script>
|
||||
</body>
|
|
@ -40,3 +40,44 @@ function test_computed_value(property, specified, computed) {
|
|||
}, "Property " + property + " value '" + specified + "' computes to " +
|
||||
computedDesc);
|
||||
}
|
||||
|
||||
function test_pseudo_computed_value(pseudo, property, specified, computed) {
|
||||
if (!computed)
|
||||
computed = specified;
|
||||
|
||||
let computedDesc = "'" + computed + "'";
|
||||
if (Array.isArray(computed))
|
||||
computedDesc = '[' + computed.map(e => "'" + e + "'").join(' or ') + ']';
|
||||
|
||||
test(() => {
|
||||
assert_true(/^::\w+$/.test(pseudo), pseudo + " doesn't seem to be a pseudo-element");
|
||||
const styleElement = document.createElement("style");
|
||||
document.documentElement.appendChild(styleElement);
|
||||
try {
|
||||
const {sheet} = styleElement;
|
||||
sheet.insertRule("#target" + pseudo + "{}");
|
||||
const {style} = sheet.cssRules[0];
|
||||
const target = document.getElementById('target');
|
||||
|
||||
assert_true(property in getComputedStyle(target, pseudo), property + " doesn't seem to be supported in the computed style");
|
||||
assert_true(CSS.supports(property, specified), "'" + specified + "' is a supported value for " + property + ".");
|
||||
style[property] = specified;
|
||||
|
||||
let readValue = getComputedStyle(target, pseudo)[property];
|
||||
if (Array.isArray(computed)) {
|
||||
assert_in_array(readValue, computed);
|
||||
} else {
|
||||
assert_equals(readValue, computed);
|
||||
}
|
||||
if (readValue !== specified) {
|
||||
style[property] = '';
|
||||
style[property] = readValue;
|
||||
assert_equals(getComputedStyle(target, pseudo)[property], readValue,
|
||||
'computed value should round-trip');
|
||||
}
|
||||
} finally {
|
||||
document.documentElement.removeChild(styleElement);
|
||||
}
|
||||
}, "Property " + property + " value '" + specified + "' computes to " +
|
||||
computedDesc + " in " + pseudo);
|
||||
}
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
# Tests for list-style-type
|
||||
== list-style-type-string-001a.html list-style-type-string-001-ref.html
|
||||
== list-style-type-string-001b.html list-style-type-string-001-ref.html
|
|
@ -46,9 +46,6 @@ include ib-split/reftest.list
|
|||
# Image Values and Replaced Content Level 3
|
||||
include images3/reftest.list
|
||||
|
||||
# Lists and Counters Level 3
|
||||
include lists-3/reftest.list
|
||||
|
||||
# Masking Level 1
|
||||
include masking/reftest.list
|
||||
|
||||
|
|
|
@ -4,36 +4,71 @@ The tests are designed to be run from your local computer.
|
|||
|
||||
## System Setup
|
||||
|
||||
The test environment requires [Python 2.7+](http://www.python.org/downloads)
|
||||
(but not Python 3.x).
|
||||
Running the tests requires `python`, `pip` and `virtualenv`, as well as updating
|
||||
the system `hosts` file.
|
||||
|
||||
On Windows, be sure to add the Python directory (`c:\python2x`, by default) to
|
||||
your `%Path%` [Environment Variable](http://www.computerhope.com/issues/ch000549.htm),
|
||||
and read the [Windows Notes](#windows-notes) section below.
|
||||
Note that Python 2.7 is required. Using Python 3 is not supported.
|
||||
|
||||
<!--
|
||||
There does not appear to be a cross-platform means of installing `pip`.
|
||||
https://github.com/web-platform-tests/wpt/pull/16670
|
||||
-->
|
||||
The required setup is different depending on your operating system.
|
||||
|
||||
Install `pip`. On many systems, this can be achieved with the command `python
|
||||
-m ensurepip`. If this is not possible, use your system's package manager to
|
||||
install the `python-pip` package.
|
||||
### Linux Setup
|
||||
|
||||
Next, install `virtualenv` using the following command:
|
||||
If not already present, use the system package manager to install `python`,
|
||||
`pip` and `virtualenv`.
|
||||
|
||||
On Debian or Ubuntu:
|
||||
|
||||
```bash
|
||||
sudo apt-get install python python-pip virtualenv
|
||||
```
|
||||
|
||||
### macOS Setup
|
||||
|
||||
The system-provided Python can be used, while `pip` and `virtualenv` can be
|
||||
installed for the user only:
|
||||
|
||||
```bash
|
||||
python -m ensurepip --user
|
||||
export PATH="$PATH:$HOME/Library/Python/2.7/bin"
|
||||
pip install --user virtualenv
|
||||
```
|
||||
|
||||
To make the `PATH` change persistent, add it to your `~/.bash_profile` file or
|
||||
wherever you currently set your PATH.
|
||||
|
||||
See also [additional setup required to run Safari](safari).
|
||||
|
||||
### Windows Setup
|
||||
**Note:** In general, Windows Subsystem for Linux will provide the smoothest
|
||||
user experience for running web-platform-tests on Windows, where installation
|
||||
and usage are similar to Linux.
|
||||
|
||||
Download and install [Python 2.7](https://www.python.org/downloads). The
|
||||
installer includes `pip` by default.
|
||||
|
||||
Add `C:\Python27` and `C:\Python27\Scripts` to your `%Path%`
|
||||
[environment variable](http://www.computerhope.com/issues/ch000549.htm).
|
||||
|
||||
Finally, install `virtualenv`:
|
||||
|
||||
```bash
|
||||
pip install virtualenv
|
||||
```
|
||||
|
||||
The standard Windows shell requires that all `wpt` commands are prefixed
|
||||
by the Python binary i.e. assuming `python` is on your path the server is
|
||||
started using:
|
||||
|
||||
```bash
|
||||
python wpt serve
|
||||
```
|
||||
|
||||
### `hosts` File Setup
|
||||
|
||||
To get the tests running, you need to set up the test domains in your
|
||||
[`hosts` file](http://en.wikipedia.org/wiki/Hosts_%28file%29%23Location_in_the_file_system).
|
||||
|
||||
The necessary content can be generated with `./wpt make-hosts-file`; on
|
||||
Windows, you will need to preceed the prior command with `python` or
|
||||
the path to the Python binary (`python wpt make-hosts-file`).
|
||||
|
||||
For example, on most UNIX-like systems, you can setup the hosts file with:
|
||||
On Linux, macOS or other UNIX-like system:
|
||||
|
||||
```bash
|
||||
./wpt make-hosts-file | sudo tee -a /etc/hosts
|
||||
|
@ -48,26 +83,6 @@ python wpt make-hosts-file | Out-File %SystemRoot%\System32\drivers\etc\hosts -E
|
|||
If you are behind a proxy, you also need to make sure the domains above are
|
||||
excluded from your proxy lookups.
|
||||
|
||||
[The Ahem font](../writing-tests/ahem) is used to test precise rendering
|
||||
behavior. This font should be loaded as a web font in tests, using the
|
||||
`/fonts/ahem.css` stylesheet, as follows:
|
||||
|
||||
```
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
```
|
||||
|
||||
|
||||
### Windows Notes
|
||||
|
||||
Generally Windows Subsystem for Linux will provide the smoothest user
|
||||
experience for running web-platform-tests on Windows.
|
||||
|
||||
The standard Windows shell requires that all `wpt` commands are prefixed
|
||||
by the Python binary i.e. assuming `python` is on your path the server is
|
||||
started using:
|
||||
|
||||
`python wpt serve`
|
||||
|
||||
## Via the browser
|
||||
|
||||
The test environment can then be started using
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<meta name="timeout" content="long">
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src="/common/get-host-info.sub.js"></script>
|
||||
<script src="resources/common.js"></script>
|
||||
<script src="/common/utils.js"></script> <!-- Use token() to allow running tests in parallel -->
|
||||
|
||||
<div id=log></div>
|
||||
<script>
|
||||
|
@ -44,27 +44,29 @@ function coop_redirect_cache_test(t, hostA, hostB, coop, coep, redirectCache, de
|
|||
function run_redirect_cache_tests(documentCOOPValueTitle, testArray) {
|
||||
for (const test of tests) {
|
||||
async_test(t => {
|
||||
coop_redirect_cache_test(t, test[0], test[1], "same-origin", "require-corp", test[2], test[3], test[4], test[5]);
|
||||
// Use a consistent channel name for deterministic failure output
|
||||
let channelName = `${test[0].name}_${test[1].name}${test[2] ? "" : "_not"}_cache_redirect${test[3] ? "" : "_not"}_cache_destination`;
|
||||
coop_redirect_cache_test(t, test[0], test[1], "same-origin", "require-corp", test[2], test[3], channelName, test[4]);
|
||||
}, `${documentCOOPValueTitle} document opening popup redirect from ${test[0].origin} to ${test[1].origin} with redirectCache ${test[2]} and destCache ${test[3]}`);
|
||||
}
|
||||
}
|
||||
|
||||
let tests = [
|
||||
// popup Origin, final Origin, isCacheRedirect, isCacheDestination, channelName, hasOpener
|
||||
// popup Origin, final Origin, isCacheRedirect, isCacheDestination, hasOpener
|
||||
// Origin A->A->B
|
||||
[SAME_ORIGIN, CROSS_ORIGIN, true, false, token(), false],
|
||||
[SAME_ORIGIN, CROSS_ORIGIN, false, true, token(), false],
|
||||
[SAME_ORIGIN, CROSS_ORIGIN, true, true, token(), false],
|
||||
[SAME_ORIGIN, CROSS_ORIGIN, true, false, false],
|
||||
[SAME_ORIGIN, CROSS_ORIGIN, false, true, false],
|
||||
[SAME_ORIGIN, CROSS_ORIGIN, true, true, false],
|
||||
|
||||
// Origin A->B->B
|
||||
[CROSS_ORIGIN, SAME_ORIGIN, true, false, token(), false],
|
||||
[CROSS_ORIGIN, SAME_ORIGIN, false, true, token(), false],
|
||||
[CROSS_ORIGIN, SAME_ORIGIN, true, true, token(), false],
|
||||
[CROSS_ORIGIN, SAME_ORIGIN, true, false, false],
|
||||
[CROSS_ORIGIN, SAME_ORIGIN, false, true, false],
|
||||
[CROSS_ORIGIN, SAME_ORIGIN, true, true, false],
|
||||
|
||||
// Origin A->B->C
|
||||
[SAME_SITE, CROSS_ORIGIN, true, false, token(), false],
|
||||
[SAME_SITE, CROSS_ORIGIN, false, true, token(), false],
|
||||
[SAME_SITE, CROSS_ORIGIN, true, true, token(), false],
|
||||
[SAME_SITE, CROSS_ORIGIN, true, false, false],
|
||||
[SAME_SITE, CROSS_ORIGIN, false, true, false],
|
||||
[SAME_SITE, CROSS_ORIGIN, true, true, false],
|
||||
];
|
||||
|
||||
run_redirect_cache_tests("same-origin", tests);
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
// https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#the-submitevent-interface
|
||||
|
||||
test(() => {
|
||||
let button = document.createElement('button');
|
||||
let typeError = new TypeError();
|
||||
assert_throws(typeError, () => { new SubmitEvent() }, '0 arguments');
|
||||
assert_throws(typeError, () => { new SubmitEvent('bar', button) }, '1 invalid arguments');
|
||||
assert_throws(typeError, () => { new SubmitEvent(button, button) }, '2 invalid arguments');
|
||||
assert_throws(typeError, () => { new SubmitEvent('foo', null) }, 'Null dictionary');
|
||||
assert_throws(typeError, () => { new SubmitEvent('foo', undefined) }, 'Undefined dictionary');
|
||||
assert_throws(typeError, () => { new SubmitEvent('foo', { submitter: null }) }, 'Null submitter');
|
||||
assert_throws(typeError, () => { new SubmitEvent('foo', { submitter: undefined }) }, 'Undefined submitter');
|
||||
assert_throws(typeError, () => { new SubmitEvent('foo', { submitter: 'bar' }) }, 'Wrong type of submitter');
|
||||
}, 'Failing SubmitEvent constructor');
|
||||
|
||||
test(() => {
|
||||
let button = document.createElement('button');
|
||||
let event = new SubmitEvent('bar', { submitter: button, bubbles: true });
|
||||
assert_equals(event.submitter, button);
|
||||
assert_true(event.bubbles);
|
||||
}, 'Successful SubmitEvent constructor');
|
||||
|
||||
test(() => {
|
||||
let event = new SubmitEvent('bar', { submitter: null});
|
||||
assert_equals(event.submitter, null);
|
||||
}, 'Successful SubmitEvent constructor; null submitter');
|
||||
|
||||
test(() => {
|
||||
let event = new SubmitEvent('baz', {});
|
||||
assert_equals(event.submitter, null);
|
||||
}, 'Successful SubmitEvent constructor; empty dictionary');
|
||||
|
||||
test(() => {
|
||||
let event = new SubmitEvent('baz');
|
||||
assert_equals(event.submitter, null);
|
||||
}, 'Successful SubmitEvent constructor; missing dictionary');
|
|
@ -50,6 +50,60 @@ async_test(t => {
|
|||
});
|
||||
}, "If form's firing submission events is true, then return; 'submit' event");
|
||||
|
||||
promise_test(async () => {
|
||||
let form = populateForm('<button type=submit></button><input name=n1 value=submit type=submit>');
|
||||
let iframe = form.previousSibling;
|
||||
let submitter = form.querySelector('input[type=submit]');
|
||||
let event;
|
||||
form.addEventListener('submit', e => { event = e; });
|
||||
submitter.click();
|
||||
await loadPromise(iframe);
|
||||
assert_true(event.bubbles);
|
||||
assert_true(event.cancelable);
|
||||
assert_equals(event.submitter, submitter);
|
||||
assert_true(event instanceof SubmitEvent);
|
||||
}, 'firing an event named submit; clicking a submit button');
|
||||
|
||||
promise_test(async () => {
|
||||
let form = populateForm('');
|
||||
let iframe = form.previousSibling;
|
||||
let event;
|
||||
form.addEventListener('submit', e => { event = e; });
|
||||
form.requestSubmit();
|
||||
await loadPromise(iframe);
|
||||
assert_true(event.bubbles);
|
||||
assert_true(event.cancelable);
|
||||
assert_equals(event.submitter, null);
|
||||
assert_true(event instanceof SubmitEvent);
|
||||
}, 'firing an event named submit; form.requestSubmit()');
|
||||
|
||||
promise_test(async () => {
|
||||
let form = populateForm('');
|
||||
let iframe = form.previousSibling;
|
||||
let event;
|
||||
form.addEventListener('submit', e => { event = e; });
|
||||
form.requestSubmit(null);
|
||||
await loadPromise(iframe);
|
||||
assert_true(event.bubbles);
|
||||
assert_true(event.cancelable);
|
||||
assert_equals(event.submitter, null);
|
||||
assert_true(event instanceof SubmitEvent);
|
||||
}, 'firing an event named submit; form.requestSubmit(null)');
|
||||
|
||||
promise_test(async () => {
|
||||
let form = populateForm('<input type=submit><button type=submit></button>');
|
||||
let iframe = form.previousSibling;
|
||||
let submitter = form.querySelector('button');
|
||||
let event;
|
||||
form.addEventListener('submit', e => { event = e; });
|
||||
form.requestSubmit(submitter);
|
||||
await loadPromise(iframe);
|
||||
assert_true(event.bubbles);
|
||||
assert_true(event.cancelable);
|
||||
assert_equals(event.submitter, submitter);
|
||||
assert_true(event instanceof SubmitEvent);
|
||||
}, 'firing an event named submit; form.requestSubmit(submitter)');
|
||||
|
||||
async_test(t => {
|
||||
let form = populateForm('<input name=n1 value=v1>');
|
||||
form.onformdata = (e) => { e.target.remove(); };
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="help" href="https://html.spec.whatwg.org/C/#implicit-submission">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="./resources/targetted-form.js"></script>
|
||||
<body>
|
||||
<script>
|
||||
// This test file is "optional" because triggering implicit submission by
|
||||
// "Enter" key is not standardized.
|
||||
|
||||
const ENTER = '\uE007';
|
||||
|
||||
promise_test(async () => {
|
||||
let form = populateForm('<input name=text value=abc><input name=submiButton type=submit>');
|
||||
let event;
|
||||
form.text.focus();
|
||||
form.addEventListener('submit', e => { event = e; });
|
||||
await test_driver.send_keys(form.text, ENTER);
|
||||
assert_true(event.bubbles);
|
||||
assert_true(event.cancelable);
|
||||
assert_equals(event.submitter, form.submitButton);
|
||||
assert_true(event instanceof SubmitEvent);
|
||||
}, 'Submit event with a submit button');
|
||||
|
||||
promise_test(async () => {
|
||||
let form = populateForm('<input name=text value=abc>');
|
||||
let event;
|
||||
form.text.focus();
|
||||
form.addEventListener('submit', e => { event = e; });
|
||||
await test_driver.send_keys(form.text, ENTER);
|
||||
assert_true(event.bubbles);
|
||||
assert_true(event.cancelable);
|
||||
assert_equals(event.submitter, null);
|
||||
assert_true(event instanceof SubmitEvent);
|
||||
}, 'Submit event with no submit button');
|
||||
</script>
|
||||
</body>
|
|
@ -19,3 +19,10 @@ function submitPromise(form, iframe) {
|
|||
form.submit();
|
||||
});
|
||||
}
|
||||
|
||||
function loadPromise(iframe) {
|
||||
return new Promise((resolve, reject) => {
|
||||
iframe.onload = resolve;
|
||||
iframe.onerror = () => reject(new Error('iframe onerror fired'));
|
||||
});
|
||||
}
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<link rel="author" title="Joey Arhar" href="mailto:jarhar@chromium.org">
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
|
||||
<iframe name=frame1 id=frame1></iframe>
|
||||
<form id=form1 target=frame1 action="does_not_exist.html">
|
||||
<button id=submitbutton type=submit>
|
||||
<div id=buttonchilddiv>
|
||||
button child div text
|
||||
</div>
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<script>
|
||||
async_test(t => {
|
||||
window.addEventListener('load', () => {
|
||||
const frame1 = document.getElementById('frame1');
|
||||
frame1.addEventListener('load', t.step_func_done(() => {}));
|
||||
|
||||
const submitButton = document.getElementById('submitbutton');
|
||||
submitButton.addEventListener('click', event => {
|
||||
event.preventDefault();
|
||||
const form = document.getElementById('form1');
|
||||
form.submit();
|
||||
});
|
||||
|
||||
const buttonChildDiv = document.getElementById('buttonchilddiv');
|
||||
buttonChildDiv.click();
|
||||
});
|
||||
}, 'This test will pass if a form navigation successfully occurs when clicking a child element of a <button type=submit> element with a onclick event handler which prevents the default form submission and manually calls form.submit() instead.');
|
||||
</script>
|
|
@ -68,18 +68,21 @@ dictionary AudioConfiguration {
|
|||
dictionary MediaCapabilitiesKeySystemConfiguration {
|
||||
required DOMString keySystem;
|
||||
DOMString initDataType = "";
|
||||
DOMString audioRobustness = "";
|
||||
DOMString videoRobustness = "";
|
||||
MediaKeysRequirement distinctiveIdentifier = "optional";
|
||||
MediaKeysRequirement persistentState = "optional";
|
||||
sequence<DOMString> sessionTypes;
|
||||
KeySystemTrackConfiguration audio;
|
||||
KeySystemTrackConfiguration video;
|
||||
};
|
||||
|
||||
dictionary KeySystemTrackConfiguration {
|
||||
DOMString robustness = "";
|
||||
};
|
||||
|
||||
dictionary MediaCapabilitiesInfo {
|
||||
required boolean supported;
|
||||
required boolean smooth;
|
||||
required boolean powerEfficient;
|
||||
|
||||
};
|
||||
|
||||
dictionary MediaCapabilitiesDecodingInfo : MediaCapabilitiesInfo {
|
||||
|
|
|
@ -72,7 +72,6 @@ dictionary NDEFReadingEventInit : EventInit {
|
|||
|
||||
dictionary NDEFPushOptions {
|
||||
NDEFPushTarget target = "any";
|
||||
unrestricted double timeout = Infinity;
|
||||
boolean ignoreRead = true;
|
||||
boolean overwrite = true;
|
||||
AbortSignal? signal;
|
||||
|
|
|
@ -612,7 +612,6 @@ dictionary RTCDTMFToneChangeEventInit : EventInit {
|
|||
|
||||
partial interface RTCPeerConnection {
|
||||
Promise<RTCStatsReport> getStats(optional MediaStreamTrack? selector = null);
|
||||
attribute EventHandler onstatsended;
|
||||
};
|
||||
|
||||
[Exposed=Window]
|
||||
|
@ -626,16 +625,6 @@ dictionary RTCStats {
|
|||
required DOMString id;
|
||||
};
|
||||
|
||||
[Exposed=Window]
|
||||
interface RTCStatsEvent : Event {
|
||||
constructor(DOMString type, RTCStatsEventInit eventInitDict);
|
||||
readonly attribute RTCStatsReport report;
|
||||
};
|
||||
|
||||
dictionary RTCStatsEventInit : EventInit {
|
||||
required RTCStatsReport report;
|
||||
};
|
||||
|
||||
[Exposed=Window]
|
||||
interface RTCError : DOMException {
|
||||
constructor(RTCErrorInit init, optional DOMString message = "");
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<title>Images with loading='lazy' load when in the viewport</title>
|
||||
<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
|
||||
<link rel="help" href="https://github.com/scott-little/lazyload">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
|
||||
<!--
|
||||
Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
|
||||
-->
|
||||
|
||||
<script>
|
||||
const t = async_test("Test that images with loading='lazy' under multicol load once they enter the viewport.");
|
||||
|
||||
let has_in_viewport_loaded = false;
|
||||
let has_window_loaded = false;
|
||||
|
||||
const in_viewport_img_onload = t.step_func(function() {
|
||||
assert_false(has_in_viewport_loaded, "The in_viewport element should load only once.");
|
||||
has_in_viewport_loaded = true;
|
||||
});
|
||||
|
||||
window.addEventListener("load", t.step_func_done(function() {
|
||||
assert_true(has_in_viewport_loaded, "The in_viewport element should have loaded before window.load().");
|
||||
assert_false(has_window_loaded, "The window.load() event should only fire once.");
|
||||
has_window_loaded = true;
|
||||
}));
|
||||
|
||||
</script>
|
||||
|
||||
<div class=texty style="column-count: 2; height: 300px">
|
||||
<div style="border: 1px solid black">
|
||||
<h2 style="column-span: all"></h2>
|
||||
<img loading="lazy" src="resources/image.png?first" width="160" height="120"
|
||||
onload="in_viewport_img_onload()">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
This async script loads very slowly in order to ensure that, if the
|
||||
below_viewport element has started loading, it has a chance to finish
|
||||
loading before window.load() happens, so that the test will dependably fail
|
||||
in that case instead of potentially passing depending on how long different
|
||||
resource fetches take.
|
||||
-->
|
||||
<script async src="/common/slow.py"></script>
|
|
@ -6,3 +6,35 @@ directory_test(async (t, root) => {
|
|||
let actualContents = await slice.text();
|
||||
assert_equals(actualContents, fileContents.slice(1, fileContents.length));
|
||||
}, 'getFile() provides a file that can be sliced');
|
||||
|
||||
directory_test(async (t, root) => {
|
||||
const handle = await createEmptyFile(t, 'mtime.txt', root);
|
||||
let file = await handle.getFile();
|
||||
const first_mtime = file.lastModified;
|
||||
|
||||
// We wait for 2s here to ensure that the files do not have the
|
||||
// same modification time. Some filesystems have low resolutions
|
||||
// for modification timestamps.
|
||||
let timeout = new Promise(resolve => {
|
||||
t.step_timeout(resolve, 2000);
|
||||
});
|
||||
await timeout;
|
||||
|
||||
const writer = await handle.createWriter({keepExistingData: false});
|
||||
await writer.write(0, new Blob(['foo']));
|
||||
await writer.close();
|
||||
|
||||
file = await handle.getFile();
|
||||
const second_mtime = file.lastModified;
|
||||
|
||||
// We wait for 5 ms here to ensure that `lastModified`
|
||||
// from the File objects is stable between getFile invocations.
|
||||
timeout = new Promise(resolve => {
|
||||
t.step_timeout(resolve, 5);
|
||||
});
|
||||
await timeout;
|
||||
let fileReplica = await handle.getFile();
|
||||
assert_equals(second_mtime, fileReplica.lastModified);
|
||||
|
||||
assert_less_than(first_mtime, second_mtime);
|
||||
}, 'getFile() returns last modified time');
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<link rel=preload href="resources/dummy.xml">
|
||||
<body>
|
||||
<script>
|
||||
setup({explicit_done: true});
|
||||
setup({single_test: true});
|
||||
|
||||
var iterations = 0;
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<link rel=preload href="resources/dummy.xml">
|
||||
<body>
|
||||
<script>
|
||||
setup({explicit_done: true});
|
||||
setup({single_test: true});
|
||||
|
||||
var iterations = 0;
|
||||
|
||||
|
|
|
@ -31,14 +31,16 @@ function toMojoNDEFRecord(record) {
|
|||
return nfcRecord;
|
||||
}
|
||||
|
||||
// Converts JS objects to byte array.
|
||||
function toByteArray(data) {
|
||||
// Converts JS objects to byte array.
|
||||
if (data instanceof ArrayBuffer)
|
||||
return new Uint8Array(data);
|
||||
else if (ArrayBuffer.isView(data))
|
||||
return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
|
||||
|
||||
let byteArray = new Uint8Array(0);
|
||||
let tmpData = data;
|
||||
|
||||
if (tmpData instanceof ArrayBuffer)
|
||||
byteArray = new Uint8Array(tmpData);
|
||||
else if (typeof tmpData === 'object' || typeof tmpData === 'number')
|
||||
if (typeof tmpData === 'object' || typeof tmpData === 'number')
|
||||
tmpData = JSON.stringify(tmpData);
|
||||
|
||||
if (typeof tmpData === 'string')
|
||||
|
|
|
@ -643,7 +643,7 @@ class MockXRInputSource {
|
|||
this.primary_input_clicked_ = fakeInputSourceInit.selectionClicked;
|
||||
}
|
||||
|
||||
this.grip_ = null;
|
||||
this.mojo_from_input_ = null;
|
||||
if (fakeInputSourceInit.gripOrigin != null) {
|
||||
this.setGripOrigin(fakeInputSourceInit.gripOrigin);
|
||||
}
|
||||
|
@ -676,22 +676,22 @@ class MockXRInputSource {
|
|||
}
|
||||
|
||||
setGripOrigin(transform, emulatedPosition = false) {
|
||||
this.grip_ = new gfx.mojom.Transform();
|
||||
this.grip_.matrix = getMatrixFromTransform(transform);
|
||||
this.mojo_from_input_ = new gfx.mojom.Transform();
|
||||
this.mojo_from_input_.matrix = getMatrixFromTransform(transform);
|
||||
this.emulated_position_ = emulatedPosition;
|
||||
}
|
||||
|
||||
clearGripOrigin() {
|
||||
if (this.grip_ != null) {
|
||||
this.grip_ = null;
|
||||
if (this.mojo_from_input_ != null) {
|
||||
this.mojo_from_input_ = null;
|
||||
this.emulated_position_ = false;
|
||||
}
|
||||
}
|
||||
|
||||
setPointerOrigin(transform, emulatedPosition = false) {
|
||||
this.desc_dirty_ = true;
|
||||
this.pointer_offset_ = new gfx.mojom.Transform();
|
||||
this.pointer_offset_.matrix = getMatrixFromTransform(transform);
|
||||
this.input_from_pointer_ = new gfx.mojom.Transform();
|
||||
this.input_from_pointer_.matrix = getMatrixFromTransform(transform);
|
||||
this.emulated_position_ = emulatedPosition;
|
||||
}
|
||||
|
||||
|
@ -810,7 +810,7 @@ class MockXRInputSource {
|
|||
input_state.primaryInputPressed = this.primary_input_pressed_;
|
||||
input_state.primaryInputClicked = this.primary_input_clicked_;
|
||||
|
||||
input_state.grip = this.grip_;
|
||||
input_state.mojoFromInput = this.mojo_from_input_;
|
||||
|
||||
input_state.gamepad = this.gamepad_;
|
||||
|
||||
|
@ -840,7 +840,7 @@ class MockXRInputSource {
|
|||
break;
|
||||
}
|
||||
|
||||
input_desc.pointerOffset = this.pointer_offset_;
|
||||
input_desc.inputFromPointer = this.input_from_pointer_;
|
||||
|
||||
input_desc.profiles = this.profiles_;
|
||||
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Timed element not active after first interval active duration changes to unresolved</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<svg>
|
||||
<rect width="100" height="100" fill="green">
|
||||
<set attributeName="fill" to="red" fill="freeze"
|
||||
begin="click" end="click" dur="100ms" repeatCount="indefinite"/>
|
||||
</rect>
|
||||
</svg>
|
||||
<script>
|
||||
async_test(function(t) {
|
||||
let set = document.querySelector('set');
|
||||
window.onload = t.step_func(function() {
|
||||
t.step_timeout(function() {
|
||||
set.setAttribute('begin', '-100ms');
|
||||
set.setAttribute('begin', 'click');
|
||||
set.parentNode.appendChild(set);
|
||||
set.setAttribute('end', '-100ms');
|
||||
set.setAttribute('end', 'click');
|
||||
window.requestAnimationFrame(t.step_func_done(function() {
|
||||
let target = set.targetElement;
|
||||
assert_equals(getComputedStyle(target).fill, 'rgb(0, 128, 0)');
|
||||
}));
|
||||
}, 0);
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -95,3 +95,25 @@ steps:
|
|||
condition: always()
|
||||
errorActionPreference: silentlyContinue
|
||||
ignoreLASTEXITCODE: true
|
||||
|
||||
- powershell: |
|
||||
($webdriverFiles = Get-ChildItem -PATH "$env:systemdrive\*msedgedriver.exe" -Recurse) >$null 2>$null
|
||||
Write-Host "Found $($webdriverFiles.Count) msedgedriver binaries"
|
||||
foreach ($file in $webdriverFiles) {
|
||||
Write-Host "Deleting $file"
|
||||
Remove-Item -Path $file.FullName -Force -ErrorAction SilentlyContinue
|
||||
}
|
||||
($driverNotesFolder = Get-ChildItem -PATH "$env:systemdrive\*Driver_Notes" -Recurse) >$null 2>$null
|
||||
foreach ($file in $driverNotesFolder) {
|
||||
Write-Host "Deleting $file folder"
|
||||
Remove-Item -Path $file.FullName -Recurse -Force -ErrorAction SilentlyContinue
|
||||
}
|
||||
($zipFile = Get-ChildItem -PATH "$env:systemdrive\*edgedriver_*.zip" -Recurse) >$null 2>$null
|
||||
foreach ($file in $zipFile) {
|
||||
Write-Host "Deleting $file file"
|
||||
Remove-Item -Path $file.FullName -Force -ErrorAction SilentlyContinue
|
||||
}
|
||||
displayName: 'Cleanup Edge driver binaries'
|
||||
condition: always()
|
||||
errorActionPreference: silentlyContinue
|
||||
ignoreLASTEXITCODE: true
|
|
@ -51,9 +51,6 @@ except ImportError:
|
|||
from urllib.request import urlopen
|
||||
|
||||
|
||||
QUEUE_BASE = "https://queue.taskcluster.net/v1/task"
|
||||
|
||||
|
||||
root = os.path.abspath(
|
||||
os.path.join(os.path.dirname(__file__),
|
||||
os.pardir,
|
||||
|
@ -127,12 +124,8 @@ def checkout_revision(rev):
|
|||
|
||||
|
||||
def install_chrome(channel):
|
||||
deb_prefix = "https://dl.google.com/linux/direct/"
|
||||
if channel in ("experimental", "dev", "nightly"):
|
||||
# Pinned to 78 as 79 consistently fails reftests. TODO(foolip).
|
||||
# See https://github.com/web-platform-tests/wpt/issues/19297.
|
||||
deb_archive = "google-chrome-unstable_78.0.3904.17-1_amd64.deb"
|
||||
deb_prefix = "https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-unstable/"
|
||||
deb_archive = "google-chrome-unstable_current_amd64.deb"
|
||||
elif channel == "beta":
|
||||
deb_archive = "google-chrome-beta_current_amd64.deb"
|
||||
elif channel == "stable":
|
||||
|
@ -141,7 +134,7 @@ def install_chrome(channel):
|
|||
raise ValueError("Unrecognized release channel: %s" % channel)
|
||||
|
||||
dest = os.path.join("/tmp", deb_archive)
|
||||
resp = urlopen(deb_prefix + deb_archive)
|
||||
resp = urlopen("https://dl.google.com/linux/direct/%s" % deb_archive)
|
||||
with open(dest, "w") as f:
|
||||
f.write(resp.read())
|
||||
|
||||
|
@ -329,7 +322,14 @@ def fetch_event_data():
|
|||
# For example under local testing
|
||||
return None
|
||||
|
||||
resp = urlopen("%s/%s" % (QUEUE_BASE, task_id))
|
||||
root_url = os.environ['TASKCLUSTER_ROOT_URL']
|
||||
if root_url == 'https://taskcluster.net':
|
||||
queue_base = "https://queue.taskcluster.net/v1/task"
|
||||
else:
|
||||
queue_base = root_url + "/api/queue/v1/task"
|
||||
|
||||
|
||||
resp = urlopen("%s/%s" % (queue_base, task_id))
|
||||
|
||||
task_data = json.load(resp)
|
||||
event_data = task_data.get("extra", {}).get("github_event")
|
||||
|
|
|
@ -10,6 +10,10 @@ import github
|
|||
logging.basicConfig()
|
||||
logger = logging.getLogger("tc-download")
|
||||
|
||||
# The root URL of the Taskcluster deployment from which to download wpt reports
|
||||
# (after https://bugzilla.mozilla.org/show_bug.cgi?id=1574668 lands, this will
|
||||
# be https://community-tc.services.mozilla.com)
|
||||
TASKCLUSTER_ROOT_URL = 'https://taskcluster.net'
|
||||
|
||||
def get_parser():
|
||||
parser = argparse.ArgumentParser()
|
||||
|
@ -74,8 +78,13 @@ def run(*args, **kwargs):
|
|||
return 1
|
||||
|
||||
for taskgroup in taskgroups:
|
||||
taskgroup_url = "https://queue.taskcluster.net/v1/task-group/%s/list"
|
||||
artifacts_list_url = "https://queue.taskcluster.net/v1/task/%s/artifacts"
|
||||
if TASKCLUSTER_ROOT_URL == 'https://taskcluster.net':
|
||||
# NOTE: this condition can be removed after November 9, 2019
|
||||
taskgroup_url = "https://queue.taskcluster.net/v1/task-group/%s/list"
|
||||
artifacts_list_url = "https://queue.taskcluster.net/v1/task/%s/artifacts"
|
||||
else:
|
||||
taskgroup_url = TASKCLUSTER_ROOT_URL + "/api/queue/v1/task-group/%s/list"
|
||||
artifacts_list_url = TASKCLUSTER_ROOT_URL + "/api/queue/v1/task/%s/artifacts"
|
||||
tasks = get_json(taskgroup_url % taskgroup, "tasks")
|
||||
for task in tasks:
|
||||
task_id = task["status"]["taskId"]
|
||||
|
|
|
@ -17,6 +17,10 @@ from utils import call, get, untar, unzip
|
|||
|
||||
uname = platform.uname()
|
||||
|
||||
# the rootUrl for the firefox-ci deployment of Taskcluster
|
||||
# (after November 9, https://firefox-ci-tc.services.mozilla.com/)
|
||||
FIREFOX_CI_ROOT_URL = 'https://taskcluster.net'
|
||||
|
||||
|
||||
def _get_fileversion(binary, logger=None):
|
||||
command = "(Get-Item '%s').VersionInfo.FileVersion" % binary.replace("'", "''")
|
||||
|
@ -423,8 +427,13 @@ class FirefoxAndroid(Browser):
|
|||
if dest is None:
|
||||
dest = os.pwd
|
||||
|
||||
TC_QUEUE_BASE = "https://queue.taskcluster.net/v1/"
|
||||
TC_INDEX_BASE = "https://index.taskcluster.net/v1/"
|
||||
if FIREFOX_CI_ROOT_URL == 'https://taskcluster.net':
|
||||
# NOTE: this condition can be removed after November 9, 2019
|
||||
TC_QUEUE_BASE = "https://queue.taskcluster.net/v1/"
|
||||
TC_INDEX_BASE = "https://index.taskcluster.net/v1/"
|
||||
else:
|
||||
TC_QUEUE_BASE = FIREFOX_CI_ROOT_URL + "/api/queue/v1/"
|
||||
TC_INDEX_BASE = FIREFOX_CI_ROOT_URL + "/api/index/v1/"
|
||||
|
||||
|
||||
resp = requests.get(TC_INDEX_BASE +
|
||||
|
@ -874,10 +883,12 @@ class EdgeChromium(Browser):
|
|||
if os.path.isfile(edgedriver_path):
|
||||
# remove read-only attribute
|
||||
os.chmod(edgedriver_path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO) # 0777
|
||||
print("Delete %s file" % edgedriver_path)
|
||||
os.remove(edgedriver_path)
|
||||
driver_notes_path = os.path.join(dest, "Driver_notes")
|
||||
if os.path.isdir(driver_notes_path):
|
||||
shutil.rmtree(driver_notes_path, ignore_errors=False, onerror=handle_remove_readonly)
|
||||
driver_notes_path = os.path.join(dest, "Driver_notes")
|
||||
if os.path.isdir(driver_notes_path):
|
||||
print("Delete %s folder" % driver_notes_path)
|
||||
shutil.rmtree(driver_notes_path, ignore_errors=False, onerror=handle_remove_readonly)
|
||||
|
||||
self.logger.info("Downloading MSEdgeDriver from %s" % url)
|
||||
unzip(get(url).raw, dest)
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[viewport-no-resize-event-on-overflow-recalc.html]
|
||||
expected: TIMEOUT
|
||||
[Resize event not fired at window.visualViewport when content is added]
|
||||
expected: NOTRUN
|
|
@ -33,6 +33,13 @@ const NDEFReaderOptionTests =
|
|||
unmatchedScanOptions: {recordType: "json"},
|
||||
message: createMessage([createOpaqueRecord(test_buffer_data)])
|
||||
},
|
||||
{
|
||||
desc: "Test that reading data succeed when NDEFScanOptions'" +
|
||||
" recordType is set to 'unknown'.",
|
||||
scanOptions: {recordType: "unknown"},
|
||||
unmatchedScanOptions: {recordType: "json"},
|
||||
message: createMessage([createUnknownRecord(test_buffer_data)])
|
||||
},
|
||||
{
|
||||
desc: "Test that reading data succeed when NDEFScanOptions'" +
|
||||
" recordType is set to 'text'.",
|
||||
|
@ -102,6 +109,13 @@ const ReadMultiMessagesTests =
|
|||
message: createMessage([createOpaqueRecord(test_buffer_data)]),
|
||||
unmatchedMessage: createMessage([createJsonRecord(test_json_data)])
|
||||
},
|
||||
{
|
||||
desc: "Test that filtering 'unknown' record from different messages" +
|
||||
" correctly with NDEFScanOptions' recordType is set to 'unknown'.",
|
||||
scanOptions: {recordType: "unknown"},
|
||||
message: createMessage([createUnknownRecord(test_buffer_data)]),
|
||||
unmatchedMessage: createMessage([createUrlRecord(test_url_data)])
|
||||
},
|
||||
{
|
||||
desc: "Test that filtering 'text' record from different messages" +
|
||||
" correctly with NDEFScanOptions' recordType is set to 'text'.",
|
||||
|
|
|
@ -161,6 +161,30 @@
|
|||
'json() has the same content with the original dictionary');
|
||||
}, 'NDEFRecord constructor with JSON record type');
|
||||
|
||||
test(() => {
|
||||
assert_throws(new TypeError, () => new NDEFRecord(
|
||||
createUnknownRecord("A string is not a BufferSource")),
|
||||
'Only BufferSource is allowed to be the record data.');
|
||||
|
||||
let buffer = new ArrayBuffer(4);
|
||||
new Uint8Array(buffer).set([1, 2, 3, 4]);
|
||||
// Feed ArrayBuffer.
|
||||
{
|
||||
const record = new NDEFRecord(createUnknownRecord(buffer));
|
||||
assert_equals(record.recordType, 'unknown', 'recordType');
|
||||
assert_array_equals(new Uint8Array(record.data.buffer), [1, 2, 3, 4],
|
||||
'data has the same content with the original buffer');
|
||||
}
|
||||
// Feed ArrayBufferView.
|
||||
{
|
||||
let buffer_view = new Uint8Array(buffer, 1);
|
||||
const record = new NDEFRecord(createUnknownRecord(buffer_view));
|
||||
assert_equals(record.recordType, 'unknown', 'recordType');
|
||||
assert_array_equals(new Uint8Array(record.data.buffer), [2, 3, 4],
|
||||
'data has the same content with the original buffer view');
|
||||
}
|
||||
}, 'NDEFRecord constructor with unknown record type');
|
||||
|
||||
test(() => {
|
||||
let buffer = new ArrayBuffer(4);
|
||||
let buffer_view = new Uint8Array(buffer);
|
||||
|
|
|
@ -70,6 +70,14 @@ const invalid_type_messages =
|
|||
createMessage([createOpaqueRecord(test_number_data)]),
|
||||
createMessage([createOpaqueRecord(test_json_data)]),
|
||||
|
||||
// NDEFRecord must have data.
|
||||
createMessage([createUnknownRecord()]),
|
||||
|
||||
// NDEFRecord.data for 'unknown' record must be BufferSource.
|
||||
createMessage([createUnknownRecord(test_text_data)]),
|
||||
createMessage([createUnknownRecord(test_number_data)]),
|
||||
createMessage([createUnknownRecord(test_json_data)]),
|
||||
|
||||
// https://w3c.github.io/web-nfc/#dfn-map-external-data-to-ndef
|
||||
// NDEFRecord must have data.
|
||||
createMessage([createRecord('w3.org:xyz', '', undefined)]),
|
||||
|
@ -301,13 +309,14 @@ nfc_test(async (t, mockNFC) => {
|
|||
createJsonRecord(test_json_data),
|
||||
createJsonRecord(test_number_data),
|
||||
createOpaqueRecord(test_buffer_data),
|
||||
createUnknownRecord(test_buffer_data),
|
||||
createUrlRecord(test_url_data),
|
||||
createUrlRecord(test_url_data, true),
|
||||
createRecord('w3.org:xyz', '', test_buffer_data)],
|
||||
test_message_origin);
|
||||
await writer.push(message);
|
||||
assertNDEFMessagesEqual(message, mockNFC.pushedMessage());
|
||||
}, "NDEFWriter.push NDEFMessage containing text, json, opaque, url, absolute-url \
|
||||
}, "NDEFWriter.push NDEFMessage containing text, json, opaque, unknown, url, absolute-url \
|
||||
and external records with default NDEFPushOptions.");
|
||||
|
||||
nfc_test(async (t, mockNFC) => {
|
||||
|
@ -322,6 +331,13 @@ nfc_test(async (t, mockNFC) => {
|
|||
assertNDEFMessagesEqual(test_buffer_data, mockNFC.pushedMessage());
|
||||
}, "Test that NDEFWriter.push succeeds when message is ArrayBuffer.");
|
||||
|
||||
nfc_test(async (t, mockNFC) => {
|
||||
let buffer_view = new Uint8Array(test_buffer_data, 2, 5);
|
||||
const writer = new NDEFWriter();
|
||||
await writer.push(buffer_view);
|
||||
assertNDEFMessagesEqual(buffer_view, mockNFC.pushedMessage());
|
||||
}, "Test that NDEFWriter.push succeeds when message is ArrayBufferView.");
|
||||
|
||||
nfc_test(async () => {
|
||||
const writer = new NDEFWriter();
|
||||
await writer.push(createMessage([createRecord('empty')]));
|
||||
|
|
|
@ -64,8 +64,8 @@ const test_json_data = {level: 1, score: 100, label: 'Game'};
|
|||
const test_url_data = 'https://w3c.github.io/web-nfc/';
|
||||
const test_message_origin = 'https://127.0.0.1:8443';
|
||||
const test_buffer_data = new ArrayBuffer(test_text_byte_array.length);
|
||||
const test_buffer_view =
|
||||
new Uint8Array(test_buffer_data).set(test_text_byte_array);
|
||||
const test_buffer_view = new Uint8Array(test_buffer_data);
|
||||
test_buffer_view.set(test_text_byte_array);
|
||||
const fake_tag_serial_number = 'c0:45:00:02';
|
||||
|
||||
const NFCHWStatus = {};
|
||||
|
@ -111,6 +111,10 @@ function createOpaqueRecord(buffer) {
|
|||
return createRecord('opaque', 'application/octet-stream', buffer);
|
||||
}
|
||||
|
||||
function createUnknownRecord(buffer) {
|
||||
return createRecord('unknown', '', buffer);
|
||||
}
|
||||
|
||||
function createUrlRecord(url, isAbsUrl) {
|
||||
if (isAbsUrl) {
|
||||
return createRecord('absolute-url', 'text/plain', url);
|
||||
|
@ -126,11 +130,12 @@ function createNDEFPushOptions(target, timeout, ignoreRead) {
|
|||
// (e.g. NDEFWriter.push), and NDEFMessage that was received by the
|
||||
// mock NFC service.
|
||||
function assertNDEFMessagesEqual(providedMessage, receivedMessage) {
|
||||
// If simple data type is passed, e.g. String or ArrayBuffer, convert it
|
||||
// to NDEFMessage before comparing.
|
||||
// If simple data type is passed, e.g. String or ArrayBuffer or
|
||||
// ArrayBufferView, convert it to NDEFMessage before comparing.
|
||||
// https://w3c.github.io/web-nfc/#dom-ndefmessagesource
|
||||
let provided = providedMessage;
|
||||
if (providedMessage instanceof ArrayBuffer)
|
||||
if (providedMessage instanceof ArrayBuffer ||
|
||||
ArrayBuffer.isView(providedMessage))
|
||||
provided = createMessage([createOpaqueRecord(providedMessage)]);
|
||||
else if (typeof providedMessage === 'string')
|
||||
provided = createMessage([createTextRecord(providedMessage)]);
|
||||
|
|
|
@ -0,0 +1,142 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<title></title>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src="RTCPeerConnection-helper.js"></script>
|
||||
<script>
|
||||
"use strict";
|
||||
|
||||
const kSmallTimeoutMs = 10;
|
||||
|
||||
promise_test(async t => {
|
||||
const offerer = new RTCPeerConnection();
|
||||
t.add_cleanup(() => offerer.close());
|
||||
|
||||
const signalingStateChangeEvent
|
||||
= new EventWatcher(t, offerer, 'signalingstatechange')
|
||||
.wait_for('signalingstatechange');
|
||||
await offerer.setLocalDescription();
|
||||
await signalingStateChangeEvent;
|
||||
assert_equals(offerer.signalingState, 'have-local-offer');
|
||||
}, "Parameterless SLD() in 'stable' goes to 'have-local-offer'");
|
||||
|
||||
promise_test(async t => {
|
||||
const offerer = new RTCPeerConnection();
|
||||
t.add_cleanup(() => offerer.close());
|
||||
|
||||
await offerer.setLocalDescription();
|
||||
assert_not_equals(offerer.pendingLocalDescription, null);
|
||||
}, "Parameterless SLD() in 'stable' sets pendingLocalDescription");
|
||||
|
||||
promise_test(async t => {
|
||||
const offerer = new RTCPeerConnection();
|
||||
t.add_cleanup(() => offerer.close());
|
||||
|
||||
const transceiver = offerer.addTransceiver('audio');
|
||||
await offerer.setLocalDescription();
|
||||
assert_not_equals(transceiver.mid, null);
|
||||
}, "Parameterless SLD() in 'stable' assigns transceiver.mid");
|
||||
|
||||
promise_test(async t => {
|
||||
const offerer = new RTCPeerConnection();
|
||||
t.add_cleanup(() => offerer.close());
|
||||
const answerer = new RTCPeerConnection();
|
||||
t.add_cleanup(() => answerer.close());
|
||||
|
||||
await answerer.setRemoteDescription(await offerer.createOffer());
|
||||
const signalingStateChangeEvent
|
||||
= new EventWatcher(t, answerer, 'signalingstatechange')
|
||||
.wait_for('signalingstatechange');
|
||||
await answerer.setLocalDescription();
|
||||
await signalingStateChangeEvent;
|
||||
assert_equals(answerer.signalingState, 'stable');
|
||||
}, "Parameterless SLD() in 'have-remote-offer' goes to 'stable'");
|
||||
|
||||
promise_test(async t => {
|
||||
const offerer = new RTCPeerConnection();
|
||||
t.add_cleanup(() => offerer.close());
|
||||
const answerer = new RTCPeerConnection();
|
||||
t.add_cleanup(() => answerer.close());
|
||||
|
||||
await answerer.setRemoteDescription(await offerer.createOffer());
|
||||
await answerer.setLocalDescription();
|
||||
assert_not_equals(answerer.currentLocalDescription, null);
|
||||
}, "Parameterless SLD() in 'have-remote-offer' sets currentLocalDescription");
|
||||
|
||||
promise_test(async t => {
|
||||
const offerer = new RTCPeerConnection();
|
||||
t.add_cleanup(() => offerer.close());
|
||||
const answerer = new RTCPeerConnection();
|
||||
t.add_cleanup(() => answerer.close());
|
||||
|
||||
offerer.addTransceiver('audio');
|
||||
const onTransceiverPromise = new Promise(resolve =>
|
||||
answerer.ontrack = e => resolve(e.transceiver));
|
||||
await answerer.setRemoteDescription(await offerer.createOffer());
|
||||
const transceiver = await onTransceiverPromise;
|
||||
await answerer.setLocalDescription();
|
||||
assert_equals(transceiver.currentDirection, 'recvonly');
|
||||
}, "Parameterless SLD() in 'have-remote-offer' sets " +
|
||||
"transceiver.currentDirection");
|
||||
|
||||
promise_test(async t => {
|
||||
const offerer = new RTCPeerConnection();
|
||||
t.add_cleanup(() => offerer.close());
|
||||
|
||||
const offer = await offerer.createOffer();
|
||||
await offerer.setLocalDescription();
|
||||
// assert_true() is used rather than assert_equals() so that if the assertion
|
||||
// fails, the -expected.txt file is not different on each run.
|
||||
assert_true(offerer.pendingLocalDescription.sdp == offer.sdp,
|
||||
"offerer.pendingLocalDescription.sdp == offer.sdp");
|
||||
}, "Parameterless SLD() uses [[LastCreatedOffer]] if it is still valid");
|
||||
|
||||
promise_test(async t => {
|
||||
const offerer = new RTCPeerConnection();
|
||||
t.add_cleanup(() => offerer.close());
|
||||
const answerer = new RTCPeerConnection();
|
||||
t.add_cleanup(() => answerer.close());
|
||||
|
||||
await answerer.setRemoteDescription(await offerer.createOffer());
|
||||
const answer = await answerer.createAnswer();
|
||||
await answerer.setLocalDescription();
|
||||
// assert_true() is used rather than assert_equals() so that if the assertion
|
||||
// fails, the -expected.txt file is not different on each run.
|
||||
assert_true(answerer.currentLocalDescription.sdp == answer.sdp,
|
||||
"answerer.currentLocalDescription.sdp == answer.sdp");
|
||||
}, "Parameterless SLD() uses [[LastCreatedAnswer]] if it is still valid");
|
||||
|
||||
promise_test(async t => {
|
||||
const offerer = new RTCPeerConnection();
|
||||
offerer.close();
|
||||
|
||||
offerer.setLocalDescription().then(t.step_func(() => assert_not_reached()));
|
||||
await new Promise(resolve => t.step_timeout(resolve, kSmallTimeoutMs));
|
||||
}, "Parameterless SLD() never resolves if already closed");
|
||||
|
||||
promise_test(async t => {
|
||||
const offerer = new RTCPeerConnection();
|
||||
t.add_cleanup(() => offerer.close());
|
||||
|
||||
offerer.setLocalDescription().then(t.step_func(() => assert_not_reached()));
|
||||
offerer.close();
|
||||
await new Promise(resolve => t.step_timeout(resolve, kSmallTimeoutMs));
|
||||
}, "Parameterless SLD() never resolves if closed while pending");
|
||||
|
||||
|
||||
promise_test(async t => {
|
||||
const offerer = new RTCPeerConnection();
|
||||
t.add_cleanup(() => offerer.close());
|
||||
const answerer = new RTCPeerConnection();
|
||||
t.add_cleanup(() => answerer.close());
|
||||
|
||||
// Implicitly create an offer.
|
||||
await offerer.setLocalDescription();
|
||||
await answerer.setRemoteDescription(offerer.pendingLocalDescription);
|
||||
// Implicitly create an answer.
|
||||
await answerer.setLocalDescription();
|
||||
await offerer.setRemoteDescription(answerer.currentLocalDescription);
|
||||
}, "Parameterless SLD() in a full O/A exchange succeeds");
|
||||
|
||||
</script>
|
|
@ -7,3 +7,75 @@
|
|||
[WebGL test #1: context does not exist]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #9: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #17: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #23: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #8: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #13: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #18: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #5: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #14: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #22: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #20: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #3: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #24: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #7: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #11: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #2: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #4: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #1: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #21: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #6: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #19: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #12: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #16: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #10: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #15: Canvas should be red]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[canvas-resizing-with-pbo-bound.html]
|
||||
expected: TIMEOUT
|
||||
[WebGL test #0: Unable to fetch WebGL rendering context for Canvas]
|
||||
expected: FAIL
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue